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

file_download Software Requirements

All the software required for this course is free and listed below.

Browsers (Mac and Windows)

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.

Git Client (Mac, Windows, Linux)

All in-class examples, assignments, and help is done via GitHub. Download the client for your computer here.

Text Editor (Mac, Windows, Linux)

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

Node (Mac, Windows, Linux)

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 latest stable release from nodejs.org and follow the default instructions. Note: Installing Node also installs npm, Node’s package manager.

EditorConfig (Mac, Windows, Linux)

EditorConfig is a tool that enforces consistent coding styles for everyone who works on a codebase. In our case, that codebase consists of all the examples in class and all the assignments you’ll submit throughout the semester. EditorConfig consists of an extension and a configuration file (.editorconfig) that goes in your home — or project — folder. Some editors and ides have EditorConfig built in. vs Code, unfortunately, is not one of them. Install the EditorConfig extension for vs Code from here, then download this .editorconfig file and place it in your home folder. Ensure the file name is exactly .editorconfig, starting with a dot and without a file extension.

ESLint (Mac, Windows, Linux)

ESLint is a JavaScript code linter that will help to make sure your code is free of errors and bad practices. Note: Before proceeding, you must have installed Node and NPM.

Once installed, launch The Terminal and initiate the configuration process: eslint --init. Configure ESLint according to the following settings:

menu_book Textbook

JavaScript: The Definitive Guide

calendar_month Schedule

Notable Dates

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 Class Topics Homework
1
Thur
  • Thorough syllabus breakdown
  • Introduction to software toolchain
  • Carefully re-read the syllabus to ensure you’re aware of all the requirements for the course.
  • If you don’t already have a GitHub account, open one before the next class.
2 Tue
  • Software installfest
  • Anatomy of an html tag
  • The html doctype
  • The head element
  • Understanding character sets
  • Block level html elements
  • Inline html elements
  • Replaced html elements
  • Emphasis (em) and strong emphasis (strong)
Thur
  • Anatomy of a css rule
  • Linking css to html: Embedded/internal styles
  • Linking css to html: External styles
  • Reset/normalize css
  • Working with web fonts
  • Leading (line-height)
  • Bold (font-weight)
  • Italics (font-style)
3 Tue
  • Exploring JavaScript
  • Tour of JavaScript
  • Literals
  • Read 1. Introduction to JavaScript, pages 1 – 14
  • Read 2. Lexical Structure, pages 15 – 21
Thur
  • Identifiers and reserved words
  • Optional semicolons
  • Read 3. Types, Values, and Variables, pages 23 – 60
  • Read 4. Expressions and Operators, pages 61 – 96
4 Tue
  • Working numbers and text
  • Booleans
  • null and undefined
  • Symbols
  • Read 5. Statements, pages 97 – 112
Thur
  • Immutable primitives and mutable objects
  • Objects and array initializations
  • Function definition expressions
  • Assignment 1 due
  • Read 5. Statements, pages 112 – 127
5 Tue
  • Expressions
  • Compound and empty statements
  • Conditionals
  • Loops
  • Read 6. Objects, pages 129 – 153
Thur
  • Jumps
  • Miscellaneous statements
  • Declarations
  • Sparse arrays
  • Iterating over arrays
  • Multidimensional arrays
  • Intro to the concepts of task runners
  • Read 7. Arrays, pages 155 – 180
6 Tue
  • Intro to Gulp, the JavaScript-based, stream-driven task runner
  • Piping, in Gulp and in Bash
  • Gulp src(), dest(), parallel(), series(), watch(), and pipe()
  • Task breakdowns
  • Working with production and development tracks in task runners
Thur
  • Creating objects
  • Object methods
  • Querying, setting, deleting, and testing properties
  • Creating, reading, and writing arrays
  • Clone and study this Gulp template for html, css, Sass, and JavaScript
  • Read 8. Functions, pages 181 – 219
7 Tue
  • Revisit the BrowserSync Gulp module
  • Defining and invoking functions
  • Arrow functions
  • Closures
  • Read 9. Classes, pages 221 – 234
Thur
  • Function properties, methods, and constructors
  • Functional programming
  • Read 9. Classes, pages 234 – 248
8 Tue
  • Classes, prototypes, and constructors
  • Read 10. Modules, pages 249 – 257
Thur
  • Adding methods to existing classes
  • Subclasses
  • Assignment 2 due
  • Read 10. Modules, pages 257 – 266
9 Tue Spring Recess None. Enjoy your break!
Thur Spring Recess None. Enjoy your break!
10 Tue
  • Modules with classes, objects, and closures
  • Read 11. The JavaScript Standard Library, pages 267 – 300
Thur
  • Modules in Node
  • Modules in ES6
  • Read 11. The JavaScript Standard Library, pages 300 – 325
11 Tue
  • Maps
  • Regular expressions
  • Error classes
  • Read 12. Iterators and Generators, pages 327 – 332
Thur
  • Working with json
  • Timers
  • Read 12. Iterators and Generators, pages 332 – 339
12 Tue
  • Implementing iterable objects
  • Generators
  • Read 13. Asynchronous JavaScript, pages 341 – 354
Thur
  • Advanced generators
  • Assignment 3 due
  • Read 13. Asynchronous JavaScript, pages 354 – 377
13 Tue
  • Asynchronous programming with callbacks
  • Promises
  • Read 14. Metaprogramming, pages 379 – 390
Thur
  • async and await
  • Asynchronous iteration
  • Read 14. Metaprogramming, pages 390 – 406
14 Tue
  • Object extensibility
  • The prototype attribute
  • Read 15. JavaScript in Web Browsers, pages 409 – 449
Thur
  • Template tags
  • Proxy objects
  • Read 15. JavaScript in Web Browsers, pages 449 – 489
15 Tue
  • Scripting documents
  • Scripting css
  • Read 15. JavaScript in Web Browsers, pages 489 – 530
Thur
  • Events
  • Read 15. JavaScript in Web Browsers, pages 530 – 568
16 Tue
  • Open Lab
  • Evaluations
  • Final project due
None. Enjoy your break!

assignment Assignments

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

Note: Broken links in the list below will be updated once each assignment is assigned a due date.

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

info Grading

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%)

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

psychology No AI Use in Class

The use of generative ai tools is strictly forbidden in this course. All programming assignments — and any labs — associated with this course must be completed without the assistance of ai-generated content. This policy is in place to ensure that the work submitted is authentically yours and reflects your personal understanding and capabilities. Violations of this policy will be considered academic dishonesty and will be subject to disciplinary actions as outlined in the university’s academic honesty policy.

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

If you have a documented disability for which you are requesting accommodation, you are encouraged to contact Access-Ability Services as soon as possible by calling 860.768.4312, emailing tlopez@hartford.edu, or by stopping by the Access-Ability Services office in Auerbach Hall, Room 209. If your request for accommodations is approved, an accommodation letter will be emailed to your instructor(s) upon your request. Please discuss your accommodations with the instructor as soon as possible to make appropriate arrangements. Note: Student requests for accommodations must be filed each semester. Visit https://www.hartford.edu/academics/academic-support/accessibility-services/ and click the “Registering” link for more info and a link to a video that walks you through the process.

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

I meet students in my office by appt — via Compass — at the times noted below. (Meeting via videoconference is also an option.) If this time slot isn’t feasible, contact me to make an appt — vanegas@hartford.edu.

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.