MPCS 52553 Web Development (Autumn 2022)

Section 1
Instructor(s) Cohen, Jeffrey (jeffcohen)
Location JCL 011
Meeting Times Wednesday 5:30pm - 8:30pm
Fulfills Elective Specialization - Application Development (APP-1)

Syllabus

Course Description

This course is intended to prepare students with a general programming background to work on modern web applications. Students will learn a strong foundation of core web technologies and protocols, an overview of the major design patterns in the history of web development, and a detailed introduction to the current industry standard. We will have an emphasis on learning from publicly-available documentation, so that students are equipped to learn new techniques and frameworks in this rapidly-evolving field. 

Most of the course is focused on modern "front-end" development: client-side interactivity with modern Javascript, single-page applications, and interacting with remote resources using HTTP and REST.  But we also cover the basics of back-end development as well.

Please note that lectures are about 2 hours long, but may be slightly longer as needed.  In addition, asynchronous videos, about 1 hour per week, are required viewing between classes.  

All homework and quizzes are asynchronous, open-note, and open-internet, but quizzes are generally timed. Homework collaboration is encouraged but subject to the department's academic honesty policy.

 

Course Contents

  • Fundamentals of HTML5, CSS3, and JavaScript/ES6 for front-end programming
  • Visual design, accessibility requirements, and assistive technologies
  • Mobile website development
  • Single-page application development in React
  • Essentials of HTTP 1.1 and 2.0
  • Server-side logic and templating
  • REST API development with Python/Flask
  • Debugging tools and techniques

 

Course Work

Students will be expected to complete:

  • 6 take-home quizzes (60 pts)
  • 5 programming assignments (80 pts)

 

Textbooks

MDN Web Docs: https://developer.mozilla.org/en-US/
SQLite Documentation: https://www.sqlite.org/docs.html
Flask Documentation: https://flask.palletsprojects.com/en/2.0.x/
React Documentation: https://reactjs.org/docs/getting-started.html

Office Hours

TBD. May be via Zoom depending on COVID conditions.

Contact Info
jeffcohen@cs.uchicago.edu

Grading Policy
Grades are not curved in this class, and instead are based on the sum of all points students have earned on their quizzes, excercises, and final projects:

  • 93.0 and above: A
  • 90.0 and above: A-
  • 87.0 and above: B+
  • 83.0 and above B
  • 80.0 and above B-
  • 77.0 and above C+
  • 73.0 and above: C
  • 70.0 and above C-
  • Below 70.0: Dealt with on a case-by-case basis

Late Policy

Assignments are due within a designated two-week time period rather than hard deadline dates, but late work is generally not accepted.

Tentative Weekly Schedule

Web Pages as Documents

  • Week 1: Developming an Eye for the Web, HTML5, CSS3
  • Week 2: Classic JavaScript, Box Model, Web Fonts, Modern Layouts with Border-Box, Flexbox, and Grid.
  • Week 3: Modern JavaScript Syntax, Functions, Callbacks, DOM Manipulation, Connecting to REST APIs
  • Week 4: HTTP Network Basics, CRUD Operations, URL Parameters, Forms and Validation
  • Week 5: Abstractions and Frameworks: Media Queries, Mobile-First Design, CSS Frameworks. Server-Side Development Part 1
  • Week 6: Intro to React, Components, JSX, Server-Side Development Part 2
  • Week 7: Reach Props, State, HTML5 Accessibility, Screen Readers
  • Week 8: React Hooks, Composability
  • Week 9: The Future Web: WASM, WebSockets, H3

Course Prerequisites

Core Programming

Other Prerequisites

Students must be fluent in at least one programming language, preferably an object-oriented language.

This course requires competency in Unix and Linux. Please plan to attend the MPCS Unix Bootcamp (https://masters.cs.uchicago.edu/page/mpcs-unix-bootcamp) or review the UChicago CS Student Resource Guide here: https://uchicago-cs.github.io/student-resource-guide/

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 53020-1 -- Foundations of Database Systems
  • MPCS 56511-1 -- Introduction to Computer Security
  • MPCS 55001-2 -- Algorithms
  • MPCS 53112-1 -- Advanced Data Analytics

Eligible Programs

Masters Program in Computer Science MS in Computational Analysis in Public Policy (Year 2) MA in Computational Social Science (Year 2) Bx/MS in Computer Science (Option 1: Research-Oriented) Bx/MS in Computer Science (Option 2: Professionally-oriented - CS Majors) Bx/MS in Computer Science (Option 3: Profesionally-oriented - Non-CS Majors)