CS 31: Introduction to Computer Science I

Computer Science Department
University of California, Los Angeles
Fall 2021

SYLLABUS

Course Objectives Lecture and Discussion Sections
Course Website Assignments
Instructors and Class Meetings Examinations
Schedule of Lecture Topics and Exams Grading
Textbook

Course Objectives

In this course, you will learn the foundation concepts and principles of computer science; fundamental computer programming principles, methodologies, and techniques; and basic concepts of programming in general and the C++ language specifically.

Course Website

The URL for the course website is https://cs.ucla.edu/classes/fall21/cs31. You must check the site for announcements at least every other weekday. You must also check your email as regularly. The course CCLE site is used mostly to house Zoom links to lectures, discussions, office hours, and learning assistant workshops; recorded lectures and discussions; and material posted by TAs.

Instructor and Class Meetings

Lecture 1
MW 12-1:50
Online
David Smallberg
das@cs.ucla.edu
Lecture 2
MW 4-5:50
Online
David Smallberg
das@cs.ucla.edu
Discussion 1A
F 10-12
Online
Yunqi Guo
guoyunqi@gmail.com
Discussion 1C
F 2-4
Geology 3656
Derek Ma
mdma@ucla.edu
Discussion 1E
F 12-2
Dodd 175
Nikki Woo
nikki.k.woo@gmail.com
Discussion 1G
F 2-4
Haines A18
Shikha Mody
smody@ucla.edu
Discussion 2A
F 10-12
Dodd 121
Alexis Korb
alexiskorb@cs.ucla.edu
Discussion 2C
F 2-4
Haines A2
Qian Long
longqian@cs.ucla.edu
Discussion 1B
F 10-12
Fowler A139
Jason Panelli
panelli@cs.ucla.edu
Discussion 1D
F 12-2
Bunche 1209B
Kareem Ahmed
kareem.yousrii@gmail.com
Discussion 1F
F 12-2
Haines A18
Manoj Reddy
mdareddy@cs.ucla.edu
  Discussion 2B
F 12-2
Online
Rosa Garza
rgarza96@g.ucla.edu
Discussion 2D
F 2-4
Haines A18
Shikha Mody
smody@ucla.edu

Office hours for the instructor, TAs, and LAs are on the class web page.

Schedule of Lecture Topics and Exams

Week Date Topics
1 Sep. 27 Introduction/Computer History
  Sep. 29 Basics
2 Oct.   4 Basics
  Oct.   6 Basics
3 Oct. 11 Control Flow
  Oct. 13 Control Flow
4 Oct. 18 Functions
  Oct. 20 Functions and Program Development
5 Oct. 25 Arrays
  Oct. 26 (Tue.) Midterm 1 (6:30 pm - 7:30 pm)
  Oct. 27 Arrays
6 Nov.   1 Strings
  Nov.   3 Pointers
7 Nov.   8 Pointers
  Nov. 10 Structs and Classes
8 Nov. 15 Classes
  Nov. 16 (Tue.) Midterm 2 (6:30 pm - 7:30 pm)
  Nov. 17 Constructors
9 Nov. 22 Pointers
  Nov. 24 Function Overloading
10 Nov. 29 Review
  Dec.   1 Review
end of 10 Dec.   4 (Sat.) Final exam (6:30 pm - 9:30 pm)

Textbook

The required course textbook is an interactive online zyBook that offers a number of advantages over static text-dense textbooks. To purchase a subscription ($77):

  1. Sign in or create an account (upper right corner) at https://learn.zybooks.com
  2. Enter zyBook code: UCLACS31SmallbergFall2021
  3. Subscribe
Some of the interactive activities will be required assignments. If you have any questions/issues about administrative aspects of zyBooks (access issues, etc.) contact support@zybooks.com or look at the Students section at the zyBooks help center.

Lecture and Discussion Sections

Lectures will expand on material from the course textbook, supplemented by additional subject matter. You are responsible for material presented in the lectures.

In discussion sections, your TA along with a learning assistant (LA) will pose problems to solve in class to ensure you understand key concepts and answer questions that arise about these concepts, lecture topics, and programming projects.

Assignments

You cannot learn how to write programs without writing programs. There will be several programming projects. Each project specification will detail any requirements that differ from the general project requirements. Your program correctness score is based on your program's correctness as determined by our testing. The amount of time you spent working on the program is irrelevant; indeed, if you follow our software development advice, you'll probably spend less time and get a higher score than if you don't.

Some assignments will be activities in the course text designed to help ensure that you understand important concepts.

Occasionally you'll be asked to fill out a brief online form (e.g., because we need to gather some information for planning purposes) in a timely manner. These "responsibility assignments" will be so labelled and completing them will be worth a small part of your grade.

Every C++ program you turn in for this class outside of the course text must run successfully using two compilers, as specified in the Project Requirements document.

Programming projects are due at 11 PM on the dates below. Late submissions will be penalized by 0.0034722% per second (which comes to 12.5% per hour), making a submission worthless if submitted after 7 AM the next morning. It is your responsibility to start early and to make backups to removable devices or to online storage.

Project 1 Monday, October 4
Project 2 warmup Saturday, October 9
Project 2 Thursday, October 14
Project 3 warmup Wednesday, October 20
Project 3 Wednesday, October 27
Project 4 warmup Wednesday, November 3
Project 4 Wednesday, November 3
Project 5 warmup Monday, November 15
Project 5 Monday, November 15
Project 6 Monday, November 22
Project 7 Thursday, December 2

Examinations

The midterm will cover material from the lectures. The final examination will cover material from the entire course. Missing the final for any reason will result in a final exam score of zero.

Grading

Your grade in the course will be determined from your total score, determined from the graded materials: projects, other assignments, midterms, and the final. The total score is determined from the graded materials as follows:

Projects (excluding zyBook assignments)66%
zyBook assignments  7%
Responsibility assignments  2%
Midterm 1  5%
Midterm 2  8%
Final exam12%

A request for reconsideration of the grading for an item must be made within one week of our sending you your score for that item.

Be sure you have read and understood our expectations about academic integrity.