Post Final Examinations Details

Due to a common request at the end of each semester, those failing the course and looking to opt in to Queens College's grade replacement program can request an F. After all exams conclude a form will be available on Blackboard (between 5/21-5/24) for students to opt in to getting an F if their final computed grade is below a C.

This program is administerred by the college and is subject to change. I do not want to be liable for any mistakes due outdated information, so please do not ask me about this program instead direct them to an academic advisor.

All this form provides is a way to lower a failing grade (C-, D, D+) to an F.

This form only applies for students who receive a failing grade. It cannot turn a passing grade (C or higher) into a failing one. If a student has submitted the form and their the final grade is passing, I will use the passing grade instead.

Project Notes

Topic Submissions are due 5/16 23:59:00. The form itself will close after that, please submit your final API choices by then

Please email any questions before the weekend, I will not be available between 5/18 - 5/20

Regarding Data hidden behind # Fragments

Certain 3-Legged OAuth API's (eg. Google, Imgur) hide the access_token behind a # character which does not automatically get transmitted, this requires a second redirect

	if(req.url.startsWith("/redirection_part1")){
		fs.createReadStream("redirect.html").pipe(res);
	}
	else if(req.url.startsWith("/redirection_part2")){
		// You should have the access token here
	}
								

Have the redirect URL caught by redirection_part1, deliver the file below which redirects the request to redirection_part2 replacing the hash (#) with a query (?)

	redirect.html
	<html>
		<script>
		let queryString = location.hash.substring(1);
		window.location.href = `localhost:3000/redirection_part2?${queryString}`;
		</script>
	</html>
								

Topic 13: Consuming Third-Party API's (C23 + C24)

Final Project

  • Final Project
  • Due: May 18, 2023: 23:59:00
  • Prerequisite Material: Topic 13: Third Party APIs + Assessment 04

Topic 08: Observer Pattern (C12 + C13)

Observer Pattern

Reference [Optional]

Topic 03: Asynchronous Programming (C05 + C06)

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.

Topic 02: JavaScript Memory Management (C03 + C04)

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.

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.