Midterm Examination

The exam will be accessible on Blackboard at the start of your class time. It will not be visible before that time.

On Blackboard Collaborate I will be in the Office Hours room if you have technical difficulties.

If you expereince any issues during the exam immediately contect me through there. DO NOT wait until the end of the exam.

I don't require constant monitoring for examinations. The Blackboard Collaborate room is only for troubleshooting. I won't be providing any other assistance in there. Only enter the room if you have technical problems with the exam for the privacy of other students as I will need to look at each students exam in progress.


Once completed, Don't forget to take the Post-Exam Affidavit, Your exam will not be graded until that is submitted. It should unlock automatically once you submit the midterm


If you want to report observed academic dishonesty you may do so here. Student's who ignore course policies and take advantage of the online format during a pandemic are undermining the effort everyone else has made to diligently study and make notes.

This is a zero-sum game, each section only has two A+ and curves are determined by the average. I'll do my best to catch these incidents, but between me and the TA's there are only three pairs of eyes.

Every effort will be made to protect the idenity of those whistleblowing. Evidence will only be disclosed to the University Academic Integrity Officer who will make a final punitive decission.

In the event any student is found to be culpable, the curve will be recalculated and additional points will be redistributed among the entire class.

C09: Asynchronous Session

For todays Asynchronous Session:

  • Start working through Topic 07: Network Layer, This will be a 2-session topic, the scribing assignment will be released after our next synchronous session. This topic will be on Exam 2.
  • Review Midterm Exam 1 Topics.

C07: Asynchronous Session

  • Start working through Topic 06: Data Link Layer, This will be a 2-session topic, the scribing assignment will be released after our next synchronous session.
  • If you haven't done so yet, attempt Self-Assessment 1 on Asynchronous Programming.
    Solutions will be posted 9/25
  • Start preparing for Exam 1 which will be in early October. Exact date is dependent on you section and on the Schedule's tab.

Topic 05: Asynchronous Programming (C05 + C06)

  • Assesment 01 - Solutions will be posted on 9/25. Attempt it before then and email me any questions that you may have (after reading the Email FAQ). Making an attempt before the solution release date and then cross referencing afterwards is the best way to prepare for the exams coding question.
  • Assesment 01 Solution

C05: Asynchronous Session

  • Finish Topic 04: JS Memory Management Part 2: Scopes and Closures. Most sections can jump to function scope as the other topics was covered during our synchronous discussion.
  • Start working through Topic 05: Asynchronous Programming, this will be a 2-session topic, the scribing assignment will be released after our next synchronous session.
  • To test your understanding please attempt the self-assessment posted. This is not graded, but you will have a 25-30pt question (of similiar difficulty to Questions 1-4) on your midterm exam.
    Solutions will be posted 9/25

First Asynchronous Session (C03)

For todays Asynchronous session there will be two short topics:

  • OSI / TCP IP Model (18 minutes total)
  • Physical Layer (49 minutes total)

Please watch the videos, take notes and submit your notes on Blackboard within a week. Submit one set of notes for each topic. These topics are shorter, so the 1.5 page length requirement will be waived.

If you haven't done so already, remember to take the VOE Exam of Blackboard to avoid having your registration dropped, there are still many students who have not completed this yet and the deadline is quickly approaching.

Topic 01: JavaScript Basics (C01 + C02)

This course will utilize JavaScript as our programming language. While there will be one lecture explaining the basic syntax, it is important that you put in some practice to learn the syntax as we will be quickly moving on to more relavent topics.

freeCodeCamp is the gold standard in this regard to getting students quickly up to speed.

I'd recommend completing as many of the Basic JavaScript and ES6 demos as possible. The ES6 demos are more relavent if you have some background with JavaScript already . Feel free to skip around, many of the earlier demos can feel a bit patronizing with how simple they are. Next week we will begin looking at more complex features of JavaScript - specifically closures and asynchronous programming, so make sure you are familiar with the syntax.

Course Introduction

Before you go any further in this course read the syllabus and then complete the Verification of Attendance quiz on Blackboard, then call your friends that are also enrolled and tell them to do the same. Any student that does not complete this university requirement within the first two weeks will be dropped from the course with a WN. In previous semesters this happened to 5% of enrolled students. Once dropped I will not vouch to have you reinstated, so don't delay.

You can confirm that you've completed the VOE exam by checking for a score on Blackboard Grades.

Some clarifications: You are responsible for all material posted with the exception of material labeled [Reference - Optional]. Yellow highlights denote that a particular resource has been updated or changed.


Welcome to CS 355: Internet and Web Technologies

This page is currently under construction

This course is an introduction to the technologies behind the Internet and World Wide Web directed toward computer science majors. We will be taking a deep dive into the TCP / IP Model. Learning the protocols on each layer and how they interact with each other. We will look at various protocols at each layer, understand their purpose, data structures and underlying algorithms.

TLS and HTTPS will be coverd, we will explore the security protocol's used on the web and how data encryption works over hostile channels. We will learn the technology behind Virtual Private Network and how anyone can use this technology to stretch their local networks across the globe.

On the programming-end we will be using JavaScript. We will explore functional, asynchronous, and event-driven programming. We will learn about class-free object oriented programming, as well as write code for both TCP and HTTP servers using the Node.js runtime environment.

We will be creating web applications and exploring the Representational State Transfer software architectural style to both consume and create RESTful APIs. We will discuss caching techniques and see how they can be applied not just for it's performance benefits, but improved reliability as well.

My Teaching Philosophy is influenced heavily by Cal Newport (Deep Work, Digital Minimalism). I like system solutions; tools and resources that I can build once and reuse indefinitely. The core of my work revolves around creating content and giving lectures for each of my classes. Things that distract me from this I try to either automate away, delegate to a specialist, or minimize from my life with rules.

In graded assignments I make use of rubrics to telegraph my expectations to students. I try my best to create questions that can be self-assessed, so students can actively track their performance.

As a rule I do not extended due dates as it creates unwanted work for me. I treat grading assignments the same way sanitation worker's treat picking up trash; something clearly unpleasant, but part of the job. Accepting work past the cutoff however, is not part of my job description. I will do my best to respect your time and give you long deadlines whenever possible, please respect mine as well by not asking me for extensions.

Under the course material, I've set up an E-mail FAQ which I advise all students check before contacting me as I hope to resolve your questions as fast as possible. Each additional round of emails is not just more work for me, but downtime for students as they wait for my response, so it's in the best interest of students to be as detailed as possible. I try not to look at my email too often, as my time is better spent creating content, so factor in up to 24 hours for each response.

I wish you the best and hope you find this course enjoyable.