Topic 11: Streams & Sockets (C16 + C17)
Sockets
Reference [Optional]
Topic 10: Transport Layer (C16 + C17)
Topic 09: Routing (C14+ C15)
- Routing [2:05:43]
- Example of Distance Vector Routing | Nick Feamster [1:55]
- OSPF Areas | CertBros [8:05]
Reference [Optional] - You Should Know This Already from CS313
Topic 08: Observer Pattern (C12 + C13)
Node.js Modules
Observer Pattern
- Observer Pattern [1:36:29]
- Observer Pattern [31:34-34:46] | Azat Mardan
- Event Emitters | Node.js Foundation
- Assesment 02
Solutions will be posted on 10/21. Attempt it before then and email me any questions that you may have. 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 02 Solution
Reference [Optional]
Topic 07: Network Layer (C10 + C11)
Asynchronous Session
- For Tuesday Thursday sections work on Topic 5 (Physical Layer)and the first half of Topic 6 [00:00-35:55] (Data Link Layer). Topic 6 we will finish in class and Brightspace submissions will open afterwards. Topic 5 BrightSpace submissions are already available.
- For Saturday Sections work on Topic 4 (OSI / TCP IP Model) and Topic 5 (Physical Layer). Both Brightspace submissions are available. We work through Topic 6 entirely when I return.
- Both sections should be working through Self Assessment 01: Asynchronous programming, which is ungraded, but will be tested in Exam 1
- I will be reachable via Email, so please don't hesitate to email me if you get stuck.
- If I need to make additional changes, I will post them on to Brightspace as I need to be on campus to access the venus server. Please check Brightspace daily.
- Our next inperson class will be Sept 28 (SAT) or Oct 1 (T/TH)
Topic 06: Data Link Layer (C08 + C09)
Topic 05: Physical Layer (C07)
Topic 04: OSI / TCP IP Model (C07)
Topic 03: Asynchronous Programming (C05 + C06)
- What is the event loop? | Philip Roberts | JSConf EU 2014 [26:52]
- Asynchronous Programming using callbacks [01:34:15]
- In The Loop | Jake Archibald | JSConf Asia 2018 [0:00-24:01]
- Readings: Simpson Async & Performance Chapter 1 - Chapter 2
Self Assessment
- Assesment 01 - Solutions will be posted in a week. 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
Topic 02: JavaScript Memory Management (C03 + C04)
- JavaScript Memory Management Lesson + Demo Code
- Understanding AOT Compilers, JIT Compilers, and Interpreters | Brian Seymour [6:26]
- A crash course in just-in-time (JIT) compilers | Lin Clark
- Readings: Haverbeke Chapter 3 - Chapter 4
- Readings: Simpson Scope & Closures Chapter 1 - Chapter 2 - Chapter 6 - Chapter 7
Review
Reference
Topic 01: JavaScript Basics (C01 + C02)
- JavaScript Basics Syntax Lesson + Demo Code
- freeCodeCamp Basic JavaScript Demos
- freeCodeCamp ES6 Demos
- Skip topics on Promises, we purposely won't be using them.
- Readings: Haverbeke Chapter 1 - Chapter 2
- Readings: Simpson Types & Grammar Chapter 1 - Chapter 2 - Chapter 5
Review
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
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.