ECS 189H - Web Programming
Spring 2017

CRN: #91643 CRN: #92543
Lecture: MWF, 2:10-3:00 pm, 234 Wellman
Discussion Section:
W 10:00-10:50 am, Haring 1024
W 10:00-10:50 am, Haring 2016
Midterms: In class, Mon 5/1 and Mon 5/24.
Final: Wds, June 14, 6-8pm in 234 Wellman.
Instructor: Prof. Nina Amenta
amenta AT cs.ucdavis.edu
Lab hours: Mon 4-5:30, in 71 Kemper Hall
Teaching Assitants: Tara Harini, Carlos Rojas
thariri AT ucdavis.edu, crojas AT ucdavis.edu
Lab hours: Tu 1-2, Wds 11-12, Thurs 11-1, Fri 12-2, all in 71 Kemper Hall
Ed Tech:
Piazza, for questions and discussion.
Canvas, for grades.

Prerequisites: ECS 30 or equivalent programming experience. Some programming skills and familiarity with the UNIX programming environment are required. All students should sign up for 4 units.

Introduction

We will learn how to develop Web applications, for instance to let a user search a database over the Web or to present dynamic information provided by a constantly updating online source as a graph or chart. These applications will include both browser-side and server-side programming. The focus will be on improving our programming skills, understanding the Web and developing asynchronous, distributed software. We will also touch on learning to see security holes, data visualization, simple database setup and queries, and the challenges of working with a designer.

The course will be taught mostly in Javascript, with excusions into things we need like HTML and CSS, FlexBox, Node.js, Express and a database package. We will learn about object-oriented programming and good Javascript style. Our server-side programs will run in the Unix operating system.

Lectures and Reading

Assignments

Format

This course will have weekly programming assignments and/or online tutorials, two midterms and a final.

Grading

Grades will be determined using this formula (approximately):

Programming assignments 25%
Midterm 1 20%
Midterm 2 20%
Final 35%

Policies

Late assignments: We will have a separate submission link for late assignments, usually open for a few days after the assignment is due. We will take off 20% for late assignments. We will be strict about this because we want to be able to manage the class efficiently.

Collaboration and cheating: You should discuss the assignments with each other, and you should look at examples of similar programs or Web pages. But you are expected to turn in your own work. In this course, this means: you thoroughly understand every line of your program. You can look at someone else's program or Web page; you can even cut and paste a few lines here and there (we all do sometimes, for instance for complicated library calls with a lot of parameters), but you have to understand everything, and write most of it without reference to some other source. If we find two or more submitted programs that are substantially the same, we will report them to SJA.

Email: Class email is a business communication, not a casual text to a friend. Use complete sentences and punctuation. Use a greeting ("Dear Professor,") and a closing, ("Thanks, Karl"). Identify yourself. Address the Professor as Professor Amenta, Ms. Amenta, or just Professor.

Textbooks and Reference Books

These two textbooks are are free online, but you can buy them in hardcopy for convenience - and to support the author! All of the following reference books are published by O'Reily, so you can get to them for free through the library (you need to be either connected on campus or use the library's VPN from home). Again, you may want to buy them. There are many other O'Reily books on Web programming, feel free to share if you find one that is really helpful. Finally, this one is not available for free online as far as I know. Also, a major source of programming help and tutorials is W3Schools, which has chapters on HTML, CSS, Javascript, Node.js, JQuery, and much else, and the tutorials at the Mozilla Developers Network and the Javascript tutorials.

Reading (from last year; will be updated)

On HTML and CSS: On Flexbox: On Javascript: On SVG graphics: On Node.js: On SQLite: On women in the open-source node community: