Hi I'm Bonnie, a San Diego-based programmer!

An anonymous person wrote:
online pharmacy india <a href=" http://canadianpharmacystorm.com/# ">adderall canadian pharmacy</a> best canadian pharmacy for cialis
An anonymous person wrote:
<a href="https://conformcringe.online/kupit-geroin-volsk.html">Купить Героин Вольск</a> <a href="https://barnfling.online/kupit-kokain-germaniya-shtutgart.html">Германия Штутгарт</a> <a href="https://boundaryeggs.online/gashish-v-assortimente-moskva-szao.html">Гашиш в ассортименте Москва СЗАО</a> <a href="https://attendantaside.info/normandiya-kupit-sishka-gashish.html">Нормандия</a> <a href="https://golanblosom.info/zakladki-amfetamina-amf-fen-kirovgrad.html">Закладки Амфетамина (амф-фен) Кировград</a> <a href="https://fedeliminate.online/belgiya-kupit-sishka-gashish.html">Бельгия</a> <a href="https://cashglow.fun/kupit-anonimno-marihuana-shishki-boshki-gashish-belgorod-zapadniy-okrug.html">Купить анонимно Марихуана (шишки бошки гашиш) Белгород Западный округ</a> <a href="https://compassiion.info/kupit-kokain-v-lyantore.html">Купить Кокаин в Лянторе</a> <a href="https://additionsfang.fun/kupit-shishki-konoplya-gandzhubas-uralsk-kazahstan.html">Купить Шишки, Конопля, Ганджубас Уральск, Казахстан</a> <a href="https://breakcheer.online/moskva-kuzminki-kupit-sishka-gashish.html">Москва Кузьминки</a> <a href="https://attendantaside.info/budva-kupit-sishka-gashish.html">Будва</a> <a href="https://franticeorate.fun/kupit-amfetamin-amf-fen-gardabani.html">Купить Амфетамин (амф-фен) Гардабани</a> <a href="https://bowlcreeper.online/kupit-kokain-novokuznetsk.html">Новокузнецк</a> <a href="https://bridgshopper.online/kupit-zakladki-lirika-v-zee.html">Купить закладки лирика в Зее</a> <a href="https://firewooudible.online/marihuana-gashish-boshki-desnogorsk-smolenskaya-oblast.html">Марихуана, Гашиш, Бошки Десногорск (Смоленская область)</a> <a href="https://differsdersive.online/zakladki-metamfetamin-v-ochere.html">Закладки метамфетамин в Очере</a> <a href="https://fastengrass.online/palermo-italiya-kupit-amfetamin-amf-fen.html">Палермо, Италия купить Амфетамин (амф-фен)</a> <a href="https://continradley.info/belarus-bobruysk-karta-kupit-mefedron-mef.html">Беларусь Бобруйск карта купить Мефедрон (меф)</a>
An anonymous person wrote:
В штормовую погоду мы попали в темное ущелье на острове. Внутри него обитали безмолвные, аморфные азиаты, со странными порядками и постоянно пытавшимися от нас абстрагироваться, попытки с ними заговорить ни к чему не приводили. <a href=http://1001rasskaz.ru>порно рассказ отцы и дети</a> [url]http://1001rasskaz.ru/[/url] http://1001rasskaz.ru/
An anonymous person wrote:
<a href=https://www.parkerrussia.ru/pens/sonnet/PR50B-MLT21/>parker premier black edition</a> или <a href=https://www.parkerrussia.ru/sets/named/PR11S-MLT98/>шариковая parker sonnet</a> https://www.parkerrussia.ru/sets/named/PR3S-GRY40MAL/
An anonymous person wrote:
To win big while you playing online casino is not easy as wrote in many sites. Whether you are the expert of the <a href=https://www.jackpotbetonline.com/how-to-play-online-casino-and-win-big/><b>casino games</b></a> but there is always a space for you to learn more about it to better in the next time.
An anonymous person wrote:
dove comprare viagra generico in italia http://canadian-pharmacyon.com <a href=http://canadian-pharmacyon.com>viagra canada</a>
An anonymous person wrote:
Hot photo galleries blogs and pictures http://film.xblognetwork.com/?briana xxx interatial porn real home porn top 100 katie jordan porn free tv porn clips naruto porn manga
An anonymous person wrote:
Write My Paper - EssayErudite.com Looking for an expert to <a href=https://essayerudite.com/write-my-paper/>write my paper</a> for you? You are at the right place. Providing superior writing service appears to be our main specialization and passion. Our website is the best destination for every English-speaking student who calls for assistance when handling his or her daily academic tasks. <a href="https://essayerudite.com/write-my-paper/" />write my paper</a> Write My Paper - https://essayerudite.com/write-my-paper/ <a href=https://essayerudite.com/dissertation-writing-service/>affordable dissertation writing</a> <a href=https://essayerudite.com/write-essay-for-me/>write essays for money</a> <a href=https://essayerudite.com/assignment-help/>my assignment help</a> <a href=https://essayerudite.com/write-my-paper/>write my research paper</a> <a href=https://essayerudite.com/buy-essay/>buy essay cheap</a>
An anonymous person wrote:
<a href="https://desiredegage.fun/moskva-nizhegorodskiy-kupit-sishka-gashish.html">Москва Нижегородский</a> <a href="https://explaineddawin.info/kupit-zakladki-spays-rossip-v-kerchosparivaetsya.html">Купить закладки спайс россыпь в Керчьоспаривается</a> <a href="https://dollegypt.fun/marihuana-shishki-boshki-gashish-mayluu-suu.html">Марихуана (шишки бошки гашиш) Майлуу-Суу</a> <a href="https://confidefloor.online/kamensk-uralskiy-kupit-shishki-konoplya-gandzhubas.html">Каменск-Уральский купить Шишки, Конопля, Ганджубас</a> <a href="https://chessgrandents.fun/map33.html">Купить анонимно Марихуана (шишки бошки гашиш) Канберра</a> <a href="https://gasfail.online/kupit-marki-v-labinsk.html">Купить Марки в Лабинск</a> <a href="https://anywaydenote.fun/zakladki-skorost-sk-alfa-pvp-avstriya-kaprun.html">Закладки Скорость СК (Альфа-ПВП) Австрия Капрун</a> <a href="https://discteenth.fun/shveytsariya-port-dyu-soley-kupit-onlayn-zakladku-amfetamin-amf-fen.html">Швейцария ПОРТ-ДЮ-СОЛЕЙ купить онлайн закладку Амфетамин (амф-фен)</a> <a href="https://dirtbehaved.online/metadon-ivanovskaya-oblast.html">Метадон Ивановская область</a> <a href="https://charleannel.online/kupit-kokain-v-gukovo.html">Купить Кокаин в Гуково</a> <a href="https://encourective.fun/tsitrus-heygts-kupit-boshki.html">Цитрус-Хейгтс купить бошки</a> <a href="https://codesperately.online/metamfetamin-o-gran-kanariya.html">Метамфетамин о. Гран Канария</a> <a href="https://fortressadvice.online/moskva-golyanovo-vao-kupit-onlayn-zakladku-ekstazi-mdma.html">Москва Гольяново ВАО купить онлайн закладку Экстази (мдма)</a> <a href="https://childismiss.info/kupit-anonimno-marihuana-gashish-boshki-novosibirsk-leninskiy.html">Купить анонимно Марихуана, Гашиш, Бошки Новосибирск Ленинский</a> <a href="https://forgetframework.online/amfetamin-amf-fen-pudozh.html">Амфетамин (амф-фен) Пудож</a> <a href="https://compepended.info/kupit-zakladki-spays-v-solnechnogorsk-7.html">Купить закладки спайс в Солнечногорск-7</a> <a href="https://cornergoing.online/perm-motovilihinskiy-rayon-kupit-sishka-gashish.html">Пермь Мотовилихинский район</a> <a href="https://buildhentic.fun/sinonimi-ketamin.html">синонимы кетамин</a>
An anonymous person wrote:
Никогда жалость так сильно не овладевает нами, как при виде красоты, тронутой тлетворным дыханием разврата. ------ http://maiak.by/forum/user/80054/ Я так же безумен, как вавилонский царь Навуходоносор, и ем только рубленую траву, которую моя кухарка называет шпинатом. ------ http://www.aqwella.com/communication/forum/user/15749/ Великие люди редко появляются в одиночестве. ------ https://feng-shui.ua/communication/forum/user/78902/ Эта тема просто бесподобна :) , мне нравится ))) ------ https://mogu-pisat.ru/forum/?PAGE_NAME=profile_view&UID=82635 You are mistaken. Write to me in PM, we will communicate. ------ http://kulerwater.ru/forum/user/11475/ Свободен лишь тот, кто владеет собой. ------ http://zai-info.ru/forum/user/131961/ You are not right. I am assured. Let's discuss. Write to me in PM, we will communicate. ------ http://xn--80a2af9c.xn--p1ai/forum/user/139944/ Also what in that case it is necessary to do? ------ <a href=http://choad.pegereb.info/categorytree/459-Kak-rasschitat-bolnichnyj-list-v-2019-godu-v-moskve-zjuzino.html>Как рассчитать больничный лист в 2019 году в Москве Зюзино</a> Желания - это цветы любви,а наслаждения - ее плоды. ------ <a href=http://godly.pegereb.info/catalogtwo/151-Voditelskaja-medicinskaja-spravka-moskva-tverskoj-zao.html>Водительская медицинская справка Москва Тверской зао</a> It seems excellent phrase to me is ------ <a href=http://brock.pegereb.info/categorytree/470-Spravka-v-bassejn-za-odin-den-kupit-v-moskve-kosino-uhtomskij.html>Справка в бассейн за один день купить в Москве Косино-Ухтомский</a>

Please submit a comment after reviewing my Introduction to Programming (IPND) Notes.




Guestbook name:

Table of Contents

Important Concepts

Lesson 1: The Basics of the Web and HTML

How the Web Works

A user opens a browser on their computer such as Firefox and requests information from a URL such as Udacity.com. The set of rules used to traverse the world wide web is called HTTP or Hypertext Transfer Protocol and the information sought might be a webpage containing text, videos, images etc. The webpage displayed is written in a language the computer understands called HTML or Hypertext Markup Language HTTP finds the HTML document on the correct server (another type of computer that stores information) and sends it back where the browser interprets and displays the information on the user's screen.

Hypertext Markup language

Hypertext Markup Language or HTML for short is code programmers write in so that the computer understands. The sentence: "I'm learning to code!"--for example--requires a special "code" to tell the computer to make the letters in the word "learning" appear in bold type.

Why Programmers are so Smart

Programmers have to be smart because computers are stupid! Programmers must write code in the correct syntax because computers translate the code literally; this can be frustrating but with extreme focus--powerful. Programmers are smarter than computers but they cannot remember all the rules! If you forget a rule--just look it up!

Programmer's Vocabulary

In programming language there are tag, element and attributedefinitions and rules. In HTML, the text is what you see and the markup is what it looks like. A tag was used in the previous sentence to make the letters in the word "text" and "markup" appear bold; it requires an opening tag and a closing tag to create the appearance. The word "text" is called the content and the entire length of this information end to end is called an element.

As mentioned there are attributes within elements. You can look them up on the internet but let me share another example here because coding is fun! Some tags require an "attribute" like the "img" tag requires an opening tag, an attribute: "src", a link to the image, an "alt" attribute containing text to desribe the image; this is for two reasons 1) in case the link is broken and 2) for the blind. What no closing tag? "img" is a void tag; and therefore, does not require a closing tag.

hipmunk!
Udacity Image

This image was borrowed from Udacity Intro to Programming lesson one to illustrate an image displayed using the img tag.

Lesson 2: Creating a Structured Document with HTML

Developer Tools Inline and Block

HTML elements are "inline" or "block." The difference between inline and block is that block elements like "p" for paragraph form an invisible box around the content inside of them.

HTML Structuring and CSS Styling

HTML and CSS Cascading Style Sheets are two of the many languages used to create web pages. HTML develops the classification or structure and CSS provides the style or look and feel of a web page. When programmers talk about DOM Document Object Model, they are talking about the tree-like structure of a web page. Beginner web page developers should start with big boxes, move to small boxes and literally sketch out their web design with a pen or pencil. Programmers define boxes or containers around their content with div tags. The div tag is one of the most important tags used to organize HTML into big and small boxes needed to organize and structure HTML. They use "span" and other tags to help with the styling of their content.

Text Editors for Programming

Text editors like Scratchpad, Codepen and Sublime make writing code easier. For example, Scratchpad is good for beginners because what's been coded is immediately displayed in a split screen view. Sublime anticipates the tag you need with a pop-up selection box triggered by one or two key-strokes.

Lesson 3: Adding Style to HTML Structure with CSS

Adding Style with CSS

Programmers use CSS to add style to their HTML structure by using the CSS Reference. Programmers learn possible values and properties of attributes they need to convert their mockup to code. Cascading means that rules are applied not only to the elements they directly match, but also to all of those elements' children. However, if a child element has multiple, overlapping rules defined for it, the more specific rule takes effect.

The Box Model and Avoiding Repetition with CSS

Programmers define boxes around their content with "div" tags but its important to remember to use standards. Using standards while positioning boxes will apply the proper semantics, allow all browsers to read your code and any programmer to edit your code. In addition, avoiding repetition in your code styling will facilitate changes and avoid errors. Standard and consistent use of the class attribute and CSS Reference will make good practice needed to refine your ability.

Code-Test-Refine

Perfect practice calls for code, test, and refine behavior: look for natural boxes in your design; look for repeated styles and semantic elements; write your HTML; apply styles from Biggest to smallest (Thanks Jacques!); and finally continue to fix your code. These five behaviors will make for perfect practice on your road to fluency!

Important Concepts - Telling Computers What to Do

Lesson 4: Introduction to Serious Programming

Computers and Computer Programs

The computer by itself does not know what to do; it has limited functionality. Computer programs are what tell the computer what to do. Anything we can imagine a computer can do, with the right programming, we can make the computer into a web browser, server, game-playing machine, computation machine and even the driver of a car.

Programming Languages

Programming languages tell the computer what steps to take. It is important to understand why new languages are invented for computers in place of English or French, German, etc. The language of humans is too ambiguous and verbose for a computer to understand. Like the definition of biweekly; is it every two weeks or twice per week? A computer needs specific syntax, clear and concise instructions in order to perform the programmers intended task.

Python and its Grammar Rules

The computer language, Python , which was named from the Monty Python series, uses Backus-Naur form invented to describe languages simply and concisely. Like English, Python has grammar rules similar to sentence structure that can be compared as non-terminals to derive terminals. For example, the English non-terminal Sentence: Noun, Verb, Object becomes the terminal: 'I like Python.' Python grammar turns the non-terminal Expression: Expression, Operator, Expression into the terminal: ((3 * 3) + (2**3)).

Lesson 5: Variables and Strings using Python

Variables

Python allows the programmer to use names aka variables to keep track of numbers via the Assignment Statement. Programmers assigning a number or value to a variable is powerful because it makes writing and reading code easier. For example, the speed of light in meters per second is 299792458. Using an assignment statement in Python: Name = Expression or speed_of_light = 299792458 will display the actual value of the speed of light when "print speed_of_light is run. The programmer no longer has to remember the value of the speed of light in meters per second.

They're called Variables because they can Vary

In math, 2+3 always equals 5. In Python the = sign means assignment which means that Python is assigning the expression "5" to a name "variable." For example, in my_variable = 5. Python is assigning the "value" 5 to "my_variable." And, because it is a variable, the assignment can be changed. The programmer can make the expression have a different value in the code each time it's evaluated.

Strings

Strings are a sequence of characters surrounded by quotes: "I'm a string!" Single or double quotes allowed as long as you open and close with the same type of mark. 'I am a string too!' Strings allow programmers to build search engines and work with any characters they can type on a keyboard. In Python, the difference between 2+2 and "2" + "2" is the quotes make it a string and the + sign is an operator that concatonates the two strings. So, instead of 2+2=4 we have "2"+"2" which is assigned "22" within the program.

Lesson 6: Input -> Function -> Output

What is a Function?

A function is something that takes input, does something to that input, and then produces output. For example, a function namedsum4 might take a set of four numbers as input and produce the sum of those four numbers as output.

Making versus Using a Function

Functions are made by starting a line of code with the keyworddef which means define and then giving the function a name followed by the function parameter(s) in parentheses followed by a colon. These parameters will eventually be replaced by actual value(s) when the fucntion is used (called).

In the body of the function, programmers write the code that specifies what to do with the input parameter(s). For example, the code illustrated in this box could be the definition of a function named sum4. The return statement triggers the function to produce the programs desired output.

def sum4(a,b,c,d):
return a + b + c + d
print sum4(2,4,7,9)
RUN
22
How do Functions help Programmers Avoid Repetition?

Functions are tools that programmers can create and reuse forever! Once a programmer has defined a function once, they never have to define it again. An example of avoiding repetition is to use output(s) of one function as input(s) to another; this is called Composition of Functions.

What happens when a Function does not have aReturnstatement?

The return statement tells Python exactly what the function should produce as output. If a function does not have a return statement, then you will get a special output: None. See the example in this box where a variable has been added to the function but to no avail:

def add_two(x):
answer = x + 2
new_number = add_two(7)
print new_number
RUN
None

Lesson 7: Control Flow and Loops: if and while

What is an if Statement?

We can use the if statement on a test expression and make a decision based on comparisons. Python has a way to compare numbers and give back a TRUE or FALSE which is known as a Boolean value. With the if statement the test expression executes 0 or 1 times depending on if the test executes to TRUE or FALSE. We can also use if statements with an else clause that will execute when the clause behind if is FALSE. As illustrated in this box:

if 10>20:
print '10 is greater!'
else:
print '20 is greater!'
RUN
20 is greater!
While Loops

While is similar to if except the while statement will loop and execute 0 to an infinite number of times as long as the test expression is TRUE. Once the test is FALSE, then it will jump to the next instruction; it could continue indefinitely which is referred to an infinite loop. Illustrated in this box is an example of what happens using countdown(3) instead of print countdown(3).

def countdown(n):
While n > 0:
print n
n = n - 1
print 'Blastoff!'
RUN
3
2
1
Blastoff!
Debugging

Debugging is a necessary skill to master if you want to become a good programmer. There are five easy steps:

  1. Examine error messages when programs crash: The last line of Python Tracebacks will tell you what went wrong. Reading backwards from there will tell you more about where the problem occurred.
  2. Work from example code: If your modified code doesn't work, comment it out and do step-by-step modifications to the example code until it does what you want.
  3. Make sure examples work: Just because you find example code doesn't mean it will work in your system. Check the example code you're using to make sure it behaves the way you expect.
  4. Check (print) intermediate results: When your code doesn't crash, but doesn't behave as expected, add print statements to your program to see where in the code things stop behaving correctly.
  5. Keep and compare old versions: When you have a working version of your code, save it before you add to the code. This will give you something to go back to if you introduce too many new bugs.

Lesson 8: Structured Data: Lists and FOR Loops

What is a LIST?

A list is much more powerful than a string because a list can be a sequence of not just characters but also numbers, strings, and other lists. With lists we use square brackets instead of quotes and separate the elements with commas. Lists support mutations which allow the programmer to alter the content of the original list without creating a new list. Aliasing lists is two ways to refer to the same object. Aliasing variable names for example, p and q, works like this:

p = [1,2,3]
q = p
p[2] = q[2] + 1
4 is now the value assigned to q[2]
Loops on Lists: for

We could loop through elements of a list using while but Python provides a simpler way via for loops. For each element in the list assign an element to the name and evaluate the block. The structure of the for loop is to the right with an example. For each element in my_list we assign the element to the name: e as in this example:

def print_all_element(p):
for e in p:
print e
my_list=[1,2,[3,4]]
print_all_elements (my_list)
RUN
[1,2,[3,4]]
Problem Solving

Problem solving is always better when you do NOT panic! Staying calm allows one to approach the problem systematically by writing small bits of code, testing them and knowing what they do. Following these steps will ensure success:

  1. Understand the inputs: what is the set of valid inputs and are there any assumptions? A smart programmer will write code defensively and check for validity of inputs. How are they represented?
  2. Understand the outputs: How should we specify the outputs? They should be based upon the original problem statement.
  3. Understand the relationships: Solve the problem statement by working some examples. Consider systematically how a human would solve the problem.
  4. Simplify and correct: Create a simple mechanical solution. Humans are lazy, but computers are not. Consider the power the computer has and transform your manual examples into simple code. But do not try to optimize prematurely.
  5. Develop incrementally: remember to code, test, and refine.Good programmers always test as they go.

Lesson 9: Object Oriented Programming

Object Oriented Programming and an Illustration

Python is called an object-oriented programming language or OOP. This means there is a construct in Python called a class that lets you structure your code in a way that adds consistency and efficiency to your programs so that they can be used on a simple less complex level. The idea is to reuse standard code that enables the programmer to develop innovative solutions with their code without getting mired in the complexity of the code at the lower levels of def __init__; this is called Abstraction which is a technique for managing complexity of computer systems at a lower level.

An Illustration of how Classes and Objects are defined in OOP:
Suppose, you create an analogy for a class as a Drill and a particular type of Drill as an object which will be used as an instance of class Drill.
Data attributes: drill_number, drill_model_number, drill_speeds, drill_torque, FORWARD_REVERSE etc.
(note: these data members might be instance variables (unique to each instance) or class variables (shared across instances)).
Methods: Mixer(), Polisher(), Driver(), Driller() Visualize an illustration of the code in this box and pretend the defined functions are indented under class Drill.

import mixer
"""This class provides drill specifications"""
class Drill():
FORWARD_REVERSE = ["F", "R"]
def __init__(self, drill_number, drill_model_number...):
self.number = drill_number
self.model = drill_model_number

def mixer(self):
mixer.drill(self.number)
Object Oriented Programming Vocabulary
ElementDefinition
ClassA class is a mechanism Python gives the programmer the ability to create user-defined types. Every object has a type and the object's type determines the operations the object supports i.e. does it have a length? And, this defines the possible values. A class is a way to take a grouping of functions and data and place them inside a container so the programmer can access them with the . Operator. Functions are still defined by def is inside a class.
InstanceAn instance of a class for example the code: client = TwilioRestClient(account_sid, auth_token) client is an instance of class TwilioRestClient. When we run the program containing the instances, the program contstructor gets called: __init__. It is there that all the data is initialized for that instance.
ObjectObject is synonymous with instance for example, the code brad = turtle.Turtle() brad is an object of Turtle. And, quotes = open(file_location) quotes is an object of File.
ModuleA module is a specialized dictionary that can store Python code to be accessed with the . Operator.
MethodA method is a function that belongs to an object. The term method is not unique to class instances. Other object types can have methods as well, such as list objects have methods like append, insert and so on.
Python Standard LibraryPython Standard Library describes the exact syntax and semantics of the Python language; this library reference manual describes the standard library that is distributed with Python. Good programmers reference this library to understand the modules available to import and their associated functions contained within.
Instance VariableInstance Variables are the data contained within the __init__ function. For example, in the class Movie we have: self.title = movie_title, self.storyline = movie_storyline, self.poster_image_url = poster_image and so on. These instance variables will be used each time we build the entertainment_center.py file.
Class VariableClass Variables create efficient code because they are defined at the class level outside the __init__ function; this means that Instances can share this type of variable. Per the Google Python Style Guide, if the class variable is constant, the programmer is advised to use all caps like this: VALID_RATINGS.
Object-Oriented Programming: Advanced Ideas

Inheritance is an advanced idea of OOP. Inheritance allows the programmer to create a parent class with instance variables like last_name and eye_color that can be inherited or used by a child class. This child class aka subclass can also have instance variables of its own like number_of_toys; this reuse of code is a huge advantage of OOP that can help the programmer reuse improve the design of existing code. For example, in the class Movie, instance variables like title and duration and instance methods like def show_trailer() and def get_local_listing() can be extracted and moved into their own class Video file that can be then shared and resued.

Method Overriding is the ability of a subclass to override a method it inherited from its parent class.

OOP's Advantages and Disadvantages

Before OOP, programming was normally seen as a series of logical procedures where the work of these procedures was to take the input and provide the desired output. OOP takes the view that what we really care about are the objects we want to manipulate rather than the logic required to manipulate them. Examples of objects range from human beings (described by name, address, and so forth) to buildings and floors (whose properties can be described and managed) down to the buttons and scroll bars on a computer desktop.

OOP is just one more programming model added to the programming world; it provides many advantages:

  1. OOP is modular, as it provides separation of duties in object-based program development.
  2. OOP is extensible, as objects can be extended to include new attributes and behaviors.
  3. OOP objects can also be reused within and across applications.

Because of these three factors: modularity, extensibility, and reusability, object-oriented programming provides improved software-development productivity over traditional procedure-based programming techniques. As a result, these three factors can also drive faster and lower cost of development, higher quality and improved maintainability of the software. Simula was the first object-oriented programming language. Java, Python, C++, Visual Basic .NET, Smalltalk, and Ruby are the most popular OOP languages today.

Companies are still using procedure programming in many small and limited time projects. There are problems that lend themselves well to functional or logic programming styles as well and applying OOP in those situations will not result in efficient programs. The disadvantages are:

  1. The thought process involved in OOP may not be natural for some people, and it can take time to get used to it.
  2. Larger program sizes of OOP due to more lines of code over procedural programming.
  3. OOP programs are slower due to more instructions to be executed.
  4. OOP programs are not suitable for all applications or problems that need to be solved.

Lesson 10: Web Applications

Servers

A server is a computer or computer program that manages access to a centralized resource or service in a network; its purpose is to handle requests, process them, and deliver responses. A web application is a program that generates content and it: lives on a web server; speak the language of Hypertext Protocol Language (HTTP); and generates content that your brownser requests. The content might be static or dynamic. Static content consists of a pre-written file or an image. Dynamic content is created on the fly and consists of your facebook page, a blog's front page or Google search results.

Your web browser for example, Google Chrome, Mozilla Firefox, Internet Explorer etc. sends a URL (Uniform Resource Locator) to a server and converts HTTP into a request line.
The request line is made up of method, path, and version. The server retrieves the
information and sends a response line back to your web browser.
The response line is made up of version, status code, and response phrase.

This box is an illustration of request and response lines:

http://www.example.com/foo
Request Line:
Method = GET; Path = /foo; Version = HTTP /1.1
Response Line:
Version = HTTP /1.1; status code = 200; Response phrase = OK
Common status codes:
200 = OK document found
302 = location elsewhere
404 = not found, error on browser side
500 = server error

The most common methods are GET and POST.
GET is most often used for requesting a document from the server. While POST is the
common method used to send data to the server. When you make an HTTP request a number of Headers formatted as
Name:_value follow the request line. Examples include the HOST: www.example.com. Another is User-Agent: chrome v.17.
This is helpful so that the server knows what type of machine is making the request.
The differences between GET and POST are illustrated in the following table:

GET (Default Method)POST
Query parameters show up in the URLq parameters show up in the request body after the HTML data
Used for fetching documentsUsed for updating data making changes
Affected by maximum URL lengthNo maximum URL length
Okay to cacheNot okay to cache due to frequent changes
Should not change serverOkay to change server
The Importance of Validating Input

It is always important to validate user input in order to minimize security risks and maximize user experience. Programmers might control user input by using dropdown lists and returning error messages; however, the best way to protect the program is by using Escaping. Escaping converts HTML operators like " and &--which, as intentional or unintentional user input, will interfere with the program's behaviour--to escaped HTML formatting. For example, without escaping this input <html> will not behave as the programmer intended. It might not display as output or it might change the way the webpage loads. If you have html code in your .py file it's best to import the cgi module which has been specifically designed to handle any intentional or unintentional HTML operator inputs. If you have separate html and .py files, then use the autoescaping feature included with your templating system.

HTML Templates and Abstraction

Templates generally refer to a library referenced to build complicated html strings. One template library built into Google App Engine (GAE) is jinja2. Templates allow programmers to avoid repetition which is important for all programming. Templates facilitate understanding and enhancing code which makes it easier to code. Using variables, templates and separate html and .py documents in a single folder, the programmer's ability to ehnance their code increases. The importance of using these techniques makes for more secure websites, more readable code, and code that is easier to modify.

Following are some techniques that further support Abstraction. String substitution allows the programmer to substitute a variable into a string using percent-sign-s;this can be convenient for a few lines of code needed to build a function but can become daunting and confusing when numerous lines of code are needed.
Template intheritance lets you define a template to which you can later add new HTML; this is useful when you want to have a consistent header and footer across your entire web application. As your web application evolves, that basic header-footer template may evolve as well without having to repeat the same code throughout several files.

The magic number concept, supports the standard of using self-defining variables in our code. Numbers are not intuitive and give us very little context as to what they mean and are supposed to do, but if we were to use variables, it gives us a better way to efficiently read and understand code.

Databases

Databases are programs that store and retrieve large amounts of structured data. A database refers to a program that stores and retrieves data; the machine running that program; and, a group of machines working together to store and retrieve data.

Google App Engine (GAE) has an infrastructure that takes care of all the distribution, replication, and load balancing of data behind a simple API (Application Programming Interface). Plus, you get a powerful query engine and transactions as well. GAE's data repository, the High Replication Datastore (HRD), uses Paxos algorithm to replicate data across multiple data centers. Data is written to the Datastore in objects known as entities. Each entity has a key that uniquely identifies it.

Lesson 11: What I learned in the Final Stage of IPND

JavaScript (JS) and jQuery

The following link: JavaScript Tutorial is where I learned these facts about the power of JavaScript aka JS. JS is the programming language used in front end web development because it helps bring web pages to life! JS requires a SCRIPT tag and aVAR syntax to delcare variables plus everything in JS is an Object. Script tags can be put anywhere on the page but the most useful places are inside the HEAD tag and at the end right before the closing BODYtag as this aids in proper page rendering. Reminder that only SCRIPT tags are allowed anywhere, CSS styles MUST be placed in the HEAD according to standard. If you haven't already done so, try the link at the beginning of this paragraph and practice pulling rabbits out of the hat!

The following link: What is the Document Object Model? is where I learned about another important tool used with JS, jQuery. jQuery is a common JS library for reading and making changes to the Document Object Model (DOM). The DOM is a tree that contains information about what is actually visible on the a website. While HTML is a static document, the browser converts HTML to the DOM and the DOM can change. In fact, the power behind JS comes from its ability to manipulate the DOM, which is essentially a JS object. When JS makes something interesting happen on a website, it's likely the action happened because JS changed the DOM. jQuery is fast and easy to use, but anything it can do, a programmer can do with regular JS code.

JavaScript Object Notation (JSON)

Google Chrome browser commands to open the JS console: option + command + J will allow the programmer to utilize a really cool debugging feature:console.log() Accessed via developer tools to debug your codeit is fast and easy.

This box provides an illustration of console.log():

var awesomeThoughts = "I am Bonnie and I am AWESOME!"
console.log(awesomeThoughts);

Browser console:
I am Bonnie and I am AWESOME!

Another JS tool to support Front End web development is JSON validator: JSONLint.com. JSON validator is used the same way a programmer would utilize the W3C Validation services for HTML or CSS. Simply copy/paste your JS code object into the validator and submit. JSON validator will display a valid JSON message or if your code is invalid the line number(s) where the mistake occurs. Remember to copy the object starting and ending with the JS syntax: curly braces. You don't need to copy the VAR or FUNCTION. Start copying the object's first curly brace and end with the object's last curly brace--copy/paste into the JSON validator and submit.

Though JavaScript has no classes as of the creation of these notes, you can mimic many of the characteristics with its functions. In the following illustration box the new keyword allows us to create a new instance of an Object. Remember that functions are objects. Notice the code in the following box, you can think of the function Car as a JavaScript version of a Python class definition:

function Car() {}
/*

var Car = function() {}
/*

var car1 = new Car();


Another handy tool is TRUTHY and FALSY. JS has a set of values that may evaluate to True or False but may not equal True or False. Truthy examples: true, non-zero numbers, strings, objects, arrays and functions. Falsy examples: false, zero, empty string, undefined, null and NAN (not a number) like zero divided by zero.

A handy tool to help you remember the differences between TRUTHY and FALSY are illustrated in the following table:

ValueTRUTHYFALSY
The number 1X
"Awesome"X
UndefinedX
-42X
{"state": false}X
[false]X
0 / 0X
MyResume

JavaScript Basics is the free Udacity course where I learned to use JS to build my resume. Click this link and get started building your resume. JavaScript Basics. I learned how to create and append arrays using the VAR syntax. Arrays in JS are zero index and the syntax looks like this:

var myArray = [item1, item2, item3]

I also learned how to access properties in and about the array using JS syntax. For example, in myArray above (myArray.length) is equal to 3; however, the last index is 2: item1 is position 0, item2 position 1 and item3 position 2. Another key learning is JavaScript Basics is encapsulation. Since everything is an object in JS denoted by the curly braces, objects can encapsulate functions. For example, I learned how to create "display" as a method of the objects: Projects, Work, Education. These objects already contain all the pertinent data about me. The code includes a function to help display the content of the objects using dot notation. This may sound crazy but I found learning JavaScript Basics easy! I dont know if it seems easy because I already know some Python or if it really is simple to understand--maybe it's just FUN! Check out my resume.