/2018-spring

Syllabus for Spring, 2018.

MIT LicenseMIT

CMP 464 – Web Programming

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

Rationalle

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.

Course Aims and Outcomes

Aims

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.

Specific Learning Outcomes

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.

Format and Procedures

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.

Assumptions

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.

Course Requirements

Tasks and assignments are intended to align with the learning outcomes specified above.

Class attendance and participation policy

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.

Course readings

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.

Assignments

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

Tentative Course Schedule

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

Academic Integrity

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.

Reasonable Accommodations and Academic Adjustments

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.

Inclusivity Statement

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