Introduction to Internet Programming

list Preamble

info 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.

list Learning Outcomes

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

menu_book Textbook

JavaScript: The Definitive Guide

file_download 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 Desktop

All in-class examples, assignments, and coding help will be carried out 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/.

calendar_month 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

⟫ First day of classes (Week 1): Wednesday, 17 January 2024

⟫ Spring recess — No class (Week 9): Monday, 11 March, and Wednesday, 13 March, 2024

⟫ Last day to withdraw with a grade of “W” (Week 12): Tuesday, 2 April 2024

⟫ Last day of classes (Week 16): Monday, 29 April 2024

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.

The weekly schedule for the semester, complete with topics and readings.
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
  • Assignment 1 due
  • 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
  • Assignment 2 due
  • Read 10. Modules, pages 249 – 266
Nine Spring recess None
Ten
  • Modules with classes, objects, and closures
  • Modules in Node
  • Modules in ES6
  • Read 11. The JavaScript Standard Library, pages 267 – 325
Eleven
  • Maps
  • Regular expressions
  • Error classes
  • Working with json
  • Timers
  • Read 12. Iterators and Generators, pages 327 – 339
Twelve
  • Implementing iterable objects
  • Generators
  • Advanced generators
  • Assignment 3 due
  • Read 13. Asynchronous JavaScript, pages 341 – 377
Thirteen
  • Asynchronous programming with callbacks
  • Promises
  • async and await
  • Asynchronous iteration
  • Read 14. Metaprogramming, pages 379 – 406
Fourteen
  • Object extensibility
  • The prototype attribute
  • Template tags
  • Proxy objects
  • Read 15. JavaScript in Web Browsers, pages 409 – 568
Fifteen
  • Scripting documents
  • Scripting css
  • Events
Work on final project
Sixteen
  • Open lab
  • Evaluations
  • Final project due
Happy break!

assignment Assignments

There are three homework-type assignments and one final project. (See the Grading Formula 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 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.

balance Class Policies

warning Academic Honesty

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

accessible 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

help_center Tutoring

Tutoring is available from the Centralized Tutoring Center. Students can make one-on-one peer tutoring appointments by visiting, emailing, or calling the Center. Students can also book appointments directly in Compass.

Location Harrison Libraries, Room L102 of lower level
Hours Monday – Thursday, 10:00 AM – 9:00 PM; Fridays, 10:00 AM – 6:00 PM; and, Sundays, 12:00 – 9:00 PM
Phone 860.768.4131
Email ctctutor@hartford.edu

balance Title IX and Sexual Assault

Sexual violence and other forms of sexual misconduct and harassment, including stalking and intimate partner violence, are prohibited under Title ix, federal and state law, and University of Hartford policy. Information on the University’s policies against sexual violence can be found at https://www.hartford.edu/about/policies/title-ix/. Resources regarding sexual violence can be found at https://www.hartford.edu/about/policies/title-ix/on-off-campus-resources.aspx

Note: University of Hartford faculty, staff, and ras are required to report incidents of sexual misconduct to the Title ix Office (title9@hartford.edu). For further information on The University’s policies and resources, please contact Jason Martinez (860.768.5255; jamartine@hartford.edu) or Justin Bell (860.768.4880; jbell@hartford.edu).

psychology Mental Health and Well-Being

Mental Health is an important aspect of students’ well-being and integral to positive academic experiences and success. If, during the semester, you experience difficulties and would like support, consider contacting the University of Hartford’s caps, or Counseling and Psychological Services, which offers a range of short-term counseling services available to full-time undergraduate students at no additional cost, and to part-time undergraduate and graduate students for a small fee. caps is located in Gengras Student Union, Room 313 map, and can be reached by calling 860.768.4482 or emailing Liz Inkel at inkel@hartford.edu. Office hours are Monday – Friday, 8:30 AM – 4:30 PM.

info Advice on Succeeding in Class

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

door_front Office Hours

contact_mail 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.