ECS 162 - Web Programming
Spring 2018

CRN: 81680,81681
Lecture: MWF, 2:10-3:00 pm, 2205 Haring
Discussion Sections:
T 6:10-7:00 pm, 194 Young
T 2:10-3:00 pm, 226 Wellman
Midterms: In class, April 30 and May 23.
Final: Mon, June 11, 3:30pm
Instructor: Prof. Nina Amenta
amenta AT cs.ucdavis.edu
Office hours (2123 Kemper): M 3:30-4:30 F 3:30-4:30
Lab hours (71 Kemper): Th 9:00-11:00
Teaching Assitants: Lance Simmons, Giritheja Sreenivasulu
Lab hours (71 Kemper): Wds 10-12, Fri 10-12.
Office hours: TBA.
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.

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 working with a designer.

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

Lectures and Examples

Assignments

Format

This course will have weekly programming assignments two midterms and a final. 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, open four days after the assignment is due. We will take off 20% for late assignments. We have to be strict about this because we are a big group and we really have to keep together.

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 you type. If we find two or more submitted programs that are substantially the same, we will report them to SJA. As you probably know, Computer Science is the largest source of referrals to SJA and of expulsions.

Using Piazza: Piazza posting is a professional communication, similar to using a collaboration system like Slack in the workplace. Try to be respectful, on-topic, and concise. Post into the relevant folder whenever you can. Try not to dupicate questions that have already been asked and answered. We will give a few extra credit points to students who give helpful responses to questions on Piazza - this is usually a lot more efficent than waiting for one of the teaching staff to notice the question.

Email: Email to the teaching staff is a business communication, not a casual text. 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

We will use books that are free online, either to everyone or just to us through the UC Davis library. You can buy these books in hardcopy for convenience - and to support the authors! If you forsee doing some professional Web programming any time soon, I recommend buying some of the O'Reily books. There are many other good books on Web programming, feel free to share (on Piazza?) if you find one that is really helpful.

Free online:

Free through the library - either access from on-campus or connect to the library through VPN. Warning: you might have trouble accessing the online server and VPN at the same time. 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 (getting updated as we go along)

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