Introduction to Internet Programming

Preamble

Description

This course serves as an introduction to programming models used to generate and support Web-based applications. The course covers markup, presentation, and front-end interactivity concerns through an in-depth examination of current client-side scripting techniques. Other topics include the document-object model (dom), event-driven programming, form validation, debugging, and asynchronous web processing.

Learning Outcomes

Upon successful completion of this course, students will understand...

Textbook

JavaScript: The Definitive Guide

Software Requirements

Browsers

Download all the browsers available at Browse Happy. Some students might also want Chrome Canary, Safari Technology Preview, Firefox Developer Edition, and Firefox Nightly. I use Firefox, Brave, and Chrome in class.

GitHub

All in-class examples, assignments, and help will be done via GitHub.

Text Editor

The code you write will require a text editor. Although there are many on the market, such as Sublime Text (nagware) and Atom (open source), VS Code (open source) is the only editor supported in class. Download the Linux, Windows, or macOS version from https://code.visualstudio.com/.

Node

Node.js is the back-end JavaScript runtime environment that we’ll use alongside (and sometimes instead of) the browser to work with JavaScript. Download the Linux, Windows, or macOS version from https://nodejs.org/en/.

Schedule

Important Notes

The University treats absences related to covid-19 as excused absences. Consequently, you’ll need to get notes from someone in class, as mentioned in the section of this syllabus marked Advice on Succeeding in Class. There will not be a streaming video option for anyone missing class.

Notable Dates

Labor Day — No class (Week 3): Monday, 5 September 2022

Virtual class, via Zoom (Week 3): Wednesday, 7 September 2022

Thanksgiving recess — No class (Week 14): Monday, 21 November, and Wednesday, 23 November 2022

Note: Time permitting, I will make every attempt to cover the topics listed below in order. However, depending on the cadence of the class, some topics may be overlooked.

Week Topics Homework
One
  • Thorough syllabus breakdown
  • Introduction to software toolchain
  • Carefully re-read the syllabus
  • If you don’t already have a GitHub account, open one
Two
  • Intro to Git, including committing, branching, pushing, pulling, forking, and cloning
  • Discuss the difference between Git and GitHub
  • Intro to the GitHub Desktop application
  • Intro to html
  • Clone the in-class examples repo for the semester
Three
  • Exploring JavaScript
  • Tour of JavaScript
  • Literals
  • Identifiers and reserved words
  • Optional semicolons
  • Read 3. Types, Values, and Variables, pages 23 – 60
  • Read 4. Expressions and Operators, pages 61 – 96
Four
  • Working numbers and text
  • Booleans
  • null and undefined
  • Symbols
  • Immutable primitives and mutable objects
  • Objects and array initializations
  • Function definition expressions
  • Read 5. Statements, pages 97 – 127
Five
  • Expressions
  • Compound and empty statements
  • Conditionals
  • Loops
  • Jumps
  • Miscellaneous statements
  • Declarations
  • Intro to the concepts of task runners
  • Read 6. Objects, pages 129 – 153
  • Read 7. Arrays, pages 155 – 180
Six
  • Intro to Gulp, the JavaScript-based, stream-driven task runner
  • Piping, in Gulp and in Bash
  • Task breakdowns
  • Creating objects
  • Querying, setting, deleting, and testing properties
  • Object methods
  • Creating, reading, and writing arrays
  • Sparse arrays
  • Iterating over arrays
  • Multidimensional arrays
Seven
  • Gulp src(), dest(), parallel(), series(), watch(), and pipe()
  • Defining and invoking functions
  • Arrow functions
  • Closures
  • Function properties, methods, and constructors
  • Functional programming
  • Clone and study this Gulp template for html, css, Sass, and JavaScript
  • Read 9. Classes, pages 221 – 248
Eight
  • Working with production and development tracks in task runners
  • Revisit the BrowserSync Gulp module
  • Classes, prototypes, and constructors
  • Adding methods to existing classes
  • Subclasses
  • Read 10. Modules, pages 249 – 266
Nine
  • Modules with classes, objects, and closures
  • Modules in Node
  • Modules in ES6
  • Read 11. The JavaScript Standard Library, pages 267 – 325
Ten
  • Maps
  • Regular expressions
  • Error classes
  • Working with json
  • Timers
  • Read 12. Iterators and Generators, pages 327 – 339
Eleven
  • Implementing iterable objects
  • Generators
  • Advanced generators
  • Read 13. Asynchronous JavaScript, pages 341 – 377
Twelve
  • Asynchronous programming with callbacks
  • Promises
  • async and await
  • Asynchronous iteration
  • Read 14. Metaprogramming, pages 379 – 406
Thirteen
  • Object extensibility
  • The prototype attribute
  • Template tags
  • Proxy objects
  • Read 15. JavaScript in Web Browsers, pages 409 – 568
Fourteen Thanksgiving recess Enjoy the holidays
Fifteen
  • Scripting documents
  • Scripting css
  • Events
Work on final project
Sixteen
  • Open lab
  • Evaluations
Happy break!

Class Policies

Advice on Succeeding in Class

Read over the following to understand procedures for maximizing your chance of succeeding in class.

Assignments

There are three homework-type assignments and one final project. (See the Grading Standards section to learn what percentage of your final grade each is worth.)

  1. Assignment 1
  2. Assignment 2
  3. Assignment 3
  4. Final Project

Grading

Grading Formula

Your grade for this course will be computed using the following formula:

  1. Assignments (45%)
    • Assignment 1 — 15%
    • Assignment 2 — 15%
    • Assignment 3 — 15%
  2. Final project (45%)
  3. Attendance and participation (10%)
    • Three unexcused absences alters the grading formula. First, the attendance and participation component of your grade increases to 40% from 10%. The 30% difference is taken from the assignments, each of which becomes worth 5%. Thus, all assignments are worth 15%, the final project remains at 45%, and attendance is worth 40%. Finally, the attendance portion of the grade becomes a 0, meaning that the highest grade you may achieve is 60 if you miss three classes without excuse and get perfect scores on all assignments and the final project.

To calculate your final grade, convert to decimal the percentages above and the grades you’ve earned. For example, if you got an 80 on the first assignment, a 93 on the second assignment, a 60 on the third assignment, a 100 on your final project, and 100 for attendance, then you’d use the following formula:

(.80 × .15) + (.93 × .15) + (.60 × .15) + (1 × .45) + (1 × .10) = 89%

I do not give grades — students earn them. The grade you earn is based strictly on the outlined formula clearly listed in this section.

This grading formula is unbending and will be adhered to strictly.

Important Note

Please do not try to negotiate a grade with me. By asking me to treat you favorably, you’re requesting that I put you above your classmates. Manage your time well; I do not accept late work.

Academic Honesty

Cheating of any kind will not be tolerated in this course; make certain all the work you submit is your own. Refresh your understanding of the college’s policy on academic honesty.

Students with Disabilities

Read about how The University of Hartford supports students with disabilities: https://www.hartford.edu/academics/academic-support/accessibility-services/default.aspx

Contact

Nowadays, I only use email for emergency situations, such as a pet emergencies, personal tragedies, etc. For matters related to our course, you’re advised to see me before or after class, during my office hours, or by appointment. My contact info is listed in the Preamble.

Office Hours

If neither of the aforementioned times agrees with your schedule, we can make alternate arrangements to meet.