Link Search Menu Expand Document

UCLA CS 130: Software Engineering (Spring 2022)

Table of contents

  1. Course description
  2. Important links
  3. Instructors
  4. Lectures
  5. Discussions / TAs
    1. Lab 1A
    2. Lab 1B
    3. Lab 1C
  6. Prerequisites
  7. Textbook and Readings
  8. Class project
  9. Exams
  10. Grading
  11. Academic Honesty
  12. Class Schedule

Course description

Principles relevant to creating large-scale software projects as opposed to small one-person efforts. The class emphasizes scalable software engineering practices, teamwork, processes, and tools. The core of this class is a team project to implement and deploy a web server in C++.

Code Review (Git/Gerrit)
https://code.cs130.org
Piazza discussions
https://piazza.com/ucla/spring2022/cs130
E-mail instructors
ucla-cs130-admin@googlegroups.com

Instructors

Michael Burns
mbx@g.ucla.edu
Alex Monroe
alexrmonroe@gmail.com
Eric Hennigan
eric.hennigan@gmail.com

Lectures

Class
Tuesdays and Thursdays
4pm - 5:50pm
Physics and Astronomy 1425
Office hours
Book on calendar or e-mail instructors to schedule.

Discussions / TAs

Lab 1A

TA
Patricia Xiao «patriciaxiao@g.ucla.edu»
Class
Friday
12pm - 1:50pm
Kaplan 135
Office hours
Friday
10am - 11:50am
Boelter 3256S-A

Lab 1B

TA
Steven Gong «nikepupu9@gmail.com»
Class
Friday
2pm - 3:50pm
Dodd 121
Office hours
Friday
4pm - 5:50pm
Boelter 3256S-A

Lab 1C

TA
Yining Hong «yninghong@gmail.com»
Class
Friday
4pm - 5:50pm
Broad Art Center 2100A
Office hours
Wednesday
10am - 11:50am
https://ucla.zoom.us/j/2125631157

Prerequisites

  • CS111: Operating Systems
  • CS131: Programming Languages
  • (Suggested) CS118: Networking

Textbook and Readings

  • (Suggested) Kernighan and Pike, The Practice of Programming
  • Additional readings on the web

Class project

During this course you will join a team of other students and complete a project in which you will jointly develop a configurable, scalable server and deploy it for public access on Google Cloud with appropriate logging and monitoring. The goal of this is to learn and practice sound development practices including thoughtful API design, maintainable coding style, automated testing, and peer code review.

Assignments will be posted on CCLE and this website each Monday after noon for specific milestones of the project, and will be due the following Monday morning by 11:59PM, submitted via online form. Students will be graded on their individual contributions for each assignment, as well as the health of the project and the functionality of the server.

Assignment topics include:

  • Repository setup, Unit tests, Code reviews (individual assignment)
  • Simple echo server, Deployment
  • Continuous build, Test coverage, Web server testing
  • Serving static files
  • API proposal and presentation (no late work accepted)
  • Refactoring
  • Reverse proxy, Threading
  • Self and peer evaluations (individual assignment)

Exams

Exam questions will be drawn from lectures, readings, and assignments. Exam structure is TBD due to remote teaching.

Grading

Course grade breakdown:

Assignments
80%
Midterm
10%
Final
10%

Work and exams will be graded on an absolute scale.

A curve may be applied, but only to students’ benefit (your grade will never decrease as a result of a curve)

Academic Honesty

For exams, presentations, and written work (other than code), normal standards of academic honesty apply, as outlined in the UCLA Student Conduct Code.

For computer code, reading and adapting publically available code is encouraged, and in some cases may be necessary. You must cite your source in a comment, in the form of a URL.

Class Schedule

Date Lecture Topics Reading
March 29 1 Course overview
Development environments
Source control
 
March 31 2 Testing  
April 5 3 Code Reviews
Tools for web server development
 
April 7 4 Build systems
Deployment
 
April 12 5 Testing, refactoring, and debugging a web server  
April 14 6 Testability
Integration testing
Mocks
Dependency Injection
 
April 19 7 Static analysis
Instructor Q&A
 
April 21 8 Logging and exception handling  
April 26 9 APIs  
April 28 - Midterm  
May 3 10 Class API standardization  
May 5 11 Writing Readable Code  
May 10 12 Threading, Refactoring  
May 12 13 Web server & Distributed system architecture
Anti-patterns
 
May 17 14 Performance
Capacity planning
Profiling
 
May 19 15 Invariant testing
Monitoring
 
May 24 16 Documentation
Team structure
Postmortems
 
May 26 17 Guest lecture  
May 31 18 Team presentations  
June 2 19 Team presentations  
June 10 - Final, 8am - 11am  

Back to top

“You may think using Google’s great, but I still think it’s terrible.” —Larry Page

Page last modified: May 30, 2022.