Computer Science

ECS 162 Web Programming

ECS 162 Web Programming ( 4 units )

Format
Lecture: 3 hours
Computer Lab: 1 hour

Instructor:

Nina Amenta (amenta@cs.ucdavis.edu)

http://www.cs.ucdavis.edu/~amenta/

Catalog description:

The technical aspects of building websites, including both server-side and client-side software development.

Prerequisites:

ECS 30 or equivalent programming experience in C and the Unix environment.

Requirements:

Students will be responsible for participating in class, completing 5-6 programming assignments, and completing a mid-term and a final exam.

Textbooks:

All of these books are available online:

Eloquent Javascript, by Marijn Haverbeke (2014)

Interactive Data Visualization for the Web, by Scott Murray (2013)

The Node Beginner Book, by Manuel Kiessling (2001)

Using SQLite, by Jay A. Kreibich (2010)

 

Computer usage:

Students can implement their programming assignments using either the computer systems available in the Computer Science Instructional Facility or on their own computers.  A commercial cloud-based Web server will be used in several projects.

Programming projects:

The programming projects will serve as the framework for the course, enabling students to build progressively more complex websites.

Summary of course contents:

Students will acquire a working knowledge of website development, including both front-end (client) and back-end (server) software design and implementation. Topics will include:

 

  1. Front-end Web deveopment
    1. HTML and CSS
    2. Object-oriented Javascript
    3. Buttons and other interactive elements
    4. Asynchronous and event-driving software
    5. Graphics and visualization
    6. Elementary design
  2. Back-end Web development
    1. Server implementation using a framework
    2. Routing HTTP requests and synthesizing dynamic Web pages
    3. Data transfer with AJAX
    4. Callback functions
    5. Cross-domain data services such as JSONp or CORS
  3. Database introduction
    1. Setting up a simple database
    2. Using a database with SQL
  4. Security introduction
    1. HTTPS and encryption
    2. Logins and authentication
    3. Common attacks such as cross-site scripting and database injection
    4. Input sanitization and other defensive practices

Goals: Students will (1) understand the Web at the applications level, (2) develop familiarity with current tools, patterns and issues, and (2) learn to design and implement a moderately sophisticated Web application.

Overlap: Client-side Web site development is taught in Design 157, Interactive Media. That course has several design prerequisites and focuses on effective visual and interaction design.  This course has a different programming prerequisite, does not cover design issues except peripherally, and covers server-side as well as client-side software development.  We plan to collaborate with Design 157 students to gain experience working in designer-programmer teams.

Data visualization using the Web will be taught in the new Statistics 141B.  This will be one small topic among many in that course.

Outcomes:

1 x an ability to apply knowledge of mathematics, science, computing, and engineering
2 an ability to design and conduct experiments, as well as to analyze and interpret data
3 x an ability to design, implement, and evaluate a system, process, component, or program to meet desired needs, within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
4 x an ability to function on multi-disciplinary teams
5 x an ability to identify, formulate, and solve computer science and engineering problems  and define the computing requirements appropriate to their solutions
6 x an understanding of professional, ethical, legal, security and social issues and responsibilities
7 an ability to communicate effectively with a range of audiences
8 the broad education necessary to understand the impact of computer science and engineering solutions in a global and societal context
9 x a recognition of the need for, and an ability to engage in life-long learning
10 x knowledge of contemporary issues
11 x an ability to use current techniques, skills, and tools necessary for computing and engineering practice
12 an ability to apply mathematical foundations, algorithmic principles, and computer science and engineering theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices
13 x an ability to apply design and development principles in the construction of software systems or computer systems of varying complexity
border