Department of Computer Science, Lehman College
Spring, 2018
Instructor: Ross Dakin
Lecture: Mondays 6:00-9:30 p.m. (GI-231)
Office Hours: Mondays 5-6 p.m. (GI-231)
Grading: Letter Grade
In a world increasingly-connected by the Internet, the World Wide Web has emerged as a nearly-ubiquitous platform for personal communication, business operations, and global information sharing.
Any student of a technological field-and especially students of computer science/engineering-would be well-served by developing an understanding of the web and a proficiency in creation of the applications that it enables.
As a result of participating in this course, students will be able to explain the various elements of the web ecosystem, demonstrate proficiency in the fundamental languages of web programming, and create web applications using contemporary tooling in preparation for a career involving web development.
By the end of this course, students will be well-versed in the fundamentals of web application development. Emphasis is placed on developing a foundation in plain HTML, CSS, and JavaScript, including a knowledge of their historical revisions and browser adoption of their latest versions. Building on this foundation, client-side JavaScript frameworks are introduced; students will learn the concepts, syntax, and benefits of jQuery (as it is still widely used despite having fallen out of favor for newer frameworks) then learn a more contemporary front-end JavaScript framework (e.g. vue.js). Students should be able to develop aesthetically pleasing single place applications (SPAs) by this juncture in the course. The course will then introduce back-end web application constructs such as databases and application servers. By the completion of the course, students will be able to develop a “full stack” web application and discuss the benefits of various architectures, design patterns, and elements of production-readyness. Specific concepts and technologies are highlighted in the course schedule below.
This course meets once per week for a 3.5-hour period without an additional lab component. This course is intended to reflect industry norms as much as possible; to that end, project delivery and collaboration are emphasized over attendance and summative assessment.
This course has no prerequisite courses; however, students are expected to be proficient in general programming principles and able to code in at least one language. Such experience will ensure that students are able to expediently learn new programming languages as they are introduced in this course.
No web development experience is required; this course assumes that students do not have any prior knowledge of the subject matter.
Note that this is not a web design course. Presentation is covered and general design tools will be discussed, but the emphasis is on application programming using the web as a platform.
Tasks and assignments are intended to align with the learning outcomes specified above.
Attendance is not a graded component of this class, though students are encouraged to attend all lectures to fully benefit from the delivered lectures and peer discussion.
In adhering to "real-world" industry norms, this class does not have any required texts, as all course material can be obtained through various free online resources. However, various readings will be recommended during the course of this class and will likely be helpful to student learning.
Student grades in this course will be assigned as follows:
- Homework (10%)
- 10 graded assignments @ 1% each
- All individual
- Intents:
- Reinforce readings/lecture content
- Practice writing code
- Practice using GitHub (delivery/submission vehicle)
- Project 1 (10%)
- HTML + CSS (static)
- Teams of 2
- Intents:
- Demonstrate ability to develop responsive static website
- Add to students' public GitHub portfolios
- Practice code collaboration
- Written Midterm (10%)
- Closed-everything
- Intents:
- Demonstrate knowledge of subject matter
- Emulate live-coding component of real-world interviews
- Project 2 (20%)
- HTML + CSS + JavaScript (front-end)
- Teams of 3-4
- Intents:
- Demonstrate ability to develop a dynamic SPA
- Add to students' GitHub portfolios
- Practice code collaboration
- Project 3 (25%)
- HTML + CSS + JavaScript + API (back-end)
- Teams of 4-5
- Intents:
- Demonstrate ability to develop a full-stack wenb application
- Add to students' GitHub portfolios
- Practice code collaboration
- Written Final (15%)
- Closed-everything
- Intents:
- Demonstrate knowledge of subject matter
- Emulate live-coding component of real-world interviews
May change to accommodate guest presenters & student needs.
Lecture | Date | Content | Readings | Assigned | Due |
---|---|---|---|---|---|
0 | Jan. 27 | Intro | -- | -- | -- |
1 | Feb. 5 | Slack, HTML, Editors, Dev Tools, CSS, URL composition, color representation, accessibility | HTML (except forms) | -- | -- |
-- | (skip week) | -- | -- | -- | -- |
2 | Feb. 20 (Tues.) | CSS (classes, selectors, hover, breakpoints, embedded vs. linked, units of measure, box model, transitions, etc.), responsive design (media queries), design tools, design considerations (performance, cognition, etc.), browser discrepancies, git/GitHub, social media sharing (OpenGraph, etc.), design patterns/antipatterns | CSS (except forms) | HW-1 | -- |
3 | Feb. 26 | Plain JavaScript (syntax, version history, closures, OOP methodologies, etc.), events | Plain JavaScript (except OOP, XHR) | HW-2 (EC) | -- |
4 | Mar. 5 | Project 1 showcase, jQuery, DOM, design standards (Material), design templates (Bootstrap), JS framework overview/trends/considerations, introduction to front-end JavaScript framework of choice, front-end logging | JavaScript (OOP) | HW-3, Project 1 | HW-1, HW-2 (EC) |
5 | Mar. 12 | AJAX, Consuming APIs (SOAP/REST, JSON, HTTP methods, response codes, MIME types), SPA overview, chosen JavaScript UI framework elaboration | TBD | -- | -- |
6 | Mar. 19 | Midterm review, Advanced HTML5 features, visualization libraries, animation, error reporting, analytics | -- | Project 2 | HW-3, Project 1 |
7 | Mar. 26 | Catch up, Project 2 collaboration time | TBD | HW-4 | Midterm |
-- | (skip week) | -- | -- | -- | -- |
8 | Apr. 9 | Project 2 showcase, backend overview (web application architecture, languages and frameworks, MVC, LAMP, MEAN, etc.), introduction to backend framework of choice, server-side template rendering, logging | TBD | -- | HW-4, Project 2 |
9 | Apr. 16 | Backend framework elaboration, databases (types, data modeling, CRUD, etc.), cloud hosting overview, cloud hosting setup | TBD | HW-8, Project 3 | HW-7, Withdraw Deadline |
10 | Apr. 23 | Publishing APIs, Asynchronous actions (emails, queues, cron, etc.), Real-time web (server push, JSONP, Websockets) | TBD | HW-9 | HW-8 |
11 | Apr. 30 | Permissions (authentication/authorization, hasing/salting, etc.), Security (OWASP top 10), OAUTH, search | TBD | HW-10 | HW-9 |
12 | May 7 | Query Performance, Caching, CDNs, Load balancing, DNS, cloud hosting provider overview | -- | -- | HW-10 |
13 | May 14 | Project showcase, final review, where to go from here (design, back end, games, etc.), making websites without making websites (CMSs) | -- | -- | Project 3 |
-- | TBA | -- | -- | -- | Final |
This course observed and upholds the CUNY Policy on Academic Integrity (Accessible Plain Text). Each student in this course is expected to abide by this policy. Any work submitted by a student in this course for academic credit will be the student's own work. Collaboration is allowed where assignments are designated as group projects.
You are encouraged to study together and to discuss information and concepts covered in lecture and the sections with other students. You can give "consulting" help to or receive "consulting" help from such students. However, this permissible cooperation should never involve one student having possession of a copy of all or part of work done by someone else, in the form of an e-mail, an e-mail attachment file, a diskette, or a hard copy.
Should copying occur, both the student who copied work from another student and the student who gave material to be copied will both automatically receive a zero for the assignment. Penalty for violation of this Code can also be extended to include failure of the course and University disciplinary action.
During examinations, you must do your own work. Talking or discussion is not permitted during the examinations, nor may you compare papers, copy from others, or collaborate in any way. Any collaborative behavior during the examinations will result in failure of the exam, and may lead to failure of the course and University disciplinary action.
In compliance with CUNY policy (PDF) and equal access laws, I am available to discuss appropriate academic accommodations that may be required for student with disabilities.
We understand that our members represent a rich variety of backgrounds and perspectives. The Computer Science department is committed to providing an atmosphere for learning that respects diversity. While working together to build this community we ask all members to:
- share their unique experiences, values and beliefs
- be open to the views of others
- honor the uniqueness of their colleagues
- appreciate the opportunity that we have to learn from each other in this community
- value each other's opinions and communicate in a respectful manner
- keep confidential discussions that the community has of a personal (or professional) nature
- use this opportunity together to discuss ways in which we can create an inclusive environment in this course and across the CUNY community