UCSB CS16 (Summer 21)

Problem Solving with Computers I

Syllabus

Fundamental building blocks for solving problems using computers. Topics include basic computer organization and programming constructs: memory, CPU, binary arithmetic, variables, expressions, statements, conditionals, iteration, functions, parameters, recursion, primitive and composite data types, and basic operating system and debugging tools.

Instructor: Zach Sisco

TAs: Apurv Varshney, Lijuan Cheng, Liu Liu, Zuying Hu

ULA: Connor McIntosh

Lectures

Tuesdays, Thursdays. 11:00 AM–12:20 PM PDT.

Synchronous, live lectures held over Zoom. These will also be recorded and available on this website. Attendance will not be taken but is highly encouraged and to your benefit.

Zoom link: Pinned to the #lecture channel on the course Slack

Lab Sections

Wednesdays:

Lab sections will be live and synchronous, but not recorded. Attendance will not be taken but is highly encouraged and to your benefit. Please only attend the lab section you registered for.

Zoom link: Same zoom link as lectures.

Office Hours

Zoom link: Same zoom link as lectures and lab sections.

Instructor Day/Time
Zach Sisco: Tues (1:00–3:00 PM PDT)
TA Day/Time
Apurv Varshney: Fri (10:00–12:00 AM PDT)
Lijuan Cheng: Thurs (9:00–11:00 AM PDT)
Liu Liu: Mon (5:00–7:00 PM PDT)
Zuying Hu: Tues (3:00–5:00 PM PDT)
ULA Day/Time
Connor McIntosh: Thurs (5:00–7:00 PM PDT)

Course Resources

We will use 5 online resources for conducting the course.

1. Gradescope: All assignments, quizzes, and the final exam will be administered through Gradescope.

2. Slack: Our course Slack will be your go-to place for asking questions and seeking help outside of lecture/lab time and office hours. Additionally, we will use it to broadcast course-wide announcements. When communicating with course staff, please use our Slack channel instead of email. There is a much higher chance your message will be answered sooner.

3. GitHub: We have a course GitHub organization where you can create and store private repos for your lab assignments. More details to come.

4: Zoom: All live/synchronous communication will happen over Zoom. All Zoom links can be found as pinned messaged on the course Slack channels.

5: This website! This webpage is the syllabus and has all of the course info you need. It will be regularly updated with new lecture recordings and assignment handouts.

Assessment and Grades

All homework assignments, quizzes, labs, and final exam will be turned in using Gradescope.

Late policy: For lab and homework assignments, you will have 3 late days, no questions asked. You do not need to notify us when you use a late day; we will see it on Gradescope. We will also see if you use more than 3 late days! Any late submissions beyond these will be graded as 0. These only apply to lab and homework assignments. You can use these in different ways: for example, taking 3 late days for one assignment, or 1 late day for 3 different assignments (split between labs or homework), and whatever in between. Note that these are late days, not late hours or late minutes. That is, if you submit an assignment at 12:01 AM you just used one late day. Use them wisely! Exceptions to the late policy will only be made for documented emergencies given before the relevant deadline. There will be no make-ups for quizzes.

Grading scale: We will use a standard 10-point grading scale, with the upper and lower ends of each range as the +/- grades. Grades are calculated to 2 decimal points and are strictly assigned (no rounding).

Range Grade Range Grade
[93–100] A [77–80) C+
[90–93) A- [73–77) C
[87–90) B+ [70–73) C-
[83–87) B [60–70) D
[80–83) B- < 60 F

Curving: The grade scale represents the minimum letter grade you will be assigned—at the instructor’s discretion, the grading scale may be altered in the students’ favor if this will better reflect the students’ mastery of the material. Thus, if there is a “curve”, it will be applied at the end, not to individual assignments.

A+ grades: These may be awarded to the very best performing students in the class—but the cutoff for A+ grades will be determined at the end of the course at the discretion of the instructor (there is no pre-determined cutoff—an average of 97 or more doesn’t guarantee you an A+ grade.)

Everything is cumulative—that’s just how CS is.

Finally, note that just as in a math class, everything we do builds on all the work that came before. So, everything is cumulative—so, you can’t afford to miss any classes unless absolutely necessary. Miss two lectures in a 10-week two-lecture per-week course, and you’ve already skipped exactly 10% of the course—it wouldn’t be surprising if your performance (i.e. final grade) in the course dipped by a similar amount.

Extra credit opportunity (1%)

There is an extra credit opportunity in this course worth 1% of your total grade. In order to obtain this extra percent, you can (a) write one short essay at the beginning of the course and one short essay at the end of the course or (b) participate in a research project by completing a short survey at the beginning of the course and one short survey at the end of the course. In order to obtain any extra credit, you must complete both components in (a) or (b).

(a) Pre/Post Course Reflection Essays

You may submit two short essays (~300 words each) to Gradescope reflecting on your experience and learning outcomes on this course.

(b) Pre/Post Course Research Surveys

You may participate in a research project investigating introductory programming courses in order to help improve educational practices and tools by completing two short surveys (pre/post course surveys). Your answers will be anonymous and your participation will have no impact on your grade. The links to this survey will be distributed by your instructor at the beginning and end of the course.

Textbook

Problem Solving with C++. Walter Savitch, Edition 9 or 10.

ISBN-13: 978-0133591743

Explanation of Course Components

There is a clear weekly “cadence” to this course. Every week you will be given 1 homework assignment and 1 lab assignment. They will be due in one week before the next homework and lab are released. In place of midterm exams, we will have weekly quizzes, given on Thursdays after lecture each week. You can take the quiz anytime between the time it’s released and Friday 11:59 PM PDT, but it will be timed for 15–25 minutes.

There are five components to this course, each of which has a special job to do:

1. Reading

Each week you’ll have reading to do in the textbook. There is too much information you need to learn in this course for you to get all of it in lecture, so the readings are essential.

2. Homework/Quizzes

Homework assignments and quizzes are “pencil/paper” type problems to test your knowledge of the weekly readings and lecture material. Due to the online nature of the current quarter, these will be administered on Gradescope.

3. Programming assignments (labs)

Programming assignments (also called labs) are given once a week, and are typically started in the Wednesday lab sessions, and finished on your own time outside of lab. You must however, read the assignment and attempt the parts that you do with little assistance as soon as the assignment is released. The assumption is that you at the very least read the assignment before section. You are encouraged to use pair programming in most of the labs.

4. Lectures

Learning is something that you do as a student, not something that is “done to you” by a teacher. Therefore most of the learning you will do in this course takes place when you are actively involved in doing something challenging (i.e., during the homework assignments and labs). Most of the information you will need to do those assignments will come from the reading.

Therefore, you may ask, what is the purpose of the lectures?

The purpose of the lectures in this course is to guide you through the readings, homework, and labs:

5. Final exam

The final exam will be a cumulative assessment of your mastery of the course. Think of the weekly homework, labs, and quizzes as preparation for the final exam. It will test your conceptual knowledge of the material as well as your mastery of problem solving using programming. The final exam is required. If you miss it, you will get an F in the class.

This may seem like a like (and it is), but that’s because programming is a skill, and in order to become a proficient programmer you must do a lot of programming!

Course Schedule

Week Topics Assignments
1 Intro to C++, Variable types HW 1, Lab 1, Quiz 1
2 C++ Programs, if/else, loops HW 2, Lab 2, Quiz 2
3 Functions, pass by value/reference HW 3, Lab 3, Quiz 3
4 Arrays, command-line args, make HW 4, Lab 4, Quiz 4
5 Strings, TDD, debugging, building HW 5, Lab 5, Quiz 5
6 File I/O, streams HW 6, Lab 6, Quiz 6
7 Pointers, structs HW 7, Lab 7, Quiz 7
8 Classes HW 8, Lab 8, Quiz 8
9 Recursion HW 9, Lab 9, Quiz 9
10 Review, wrap-up Final exam

Final exam: The final exam will be released on Gradescope during the last scheduled day of class (Thursday August 26 at 11:00 AM PDT). It will be available to take until Saturday August 28 at 11:59 PM PDT. The final exam is timed. When you start it on Gradescope, the clock starts and you will have 2 hours to finish it. We will not have lecture on Thursday August 26. Instead I will be available for extended office hours. The format of the final will be similar to the quizzes and homework assignments. Expect multiple choice/selection questions, written short-response questions, and coding problems (no autograder). The final exam will be open notes/open book. There is no reasonable way we can enforce anything otherwise. Because the final exam is timed we do not expect the code you write to be syntactically perfect. We do not expect you to write all the code and compile and test it during the exam. As such, we will be lenient to minor syntax errors.

Due dates:

Course Policies

Academic integrity

Honesty and integrity in all academic work is essential for a valuable educational experience. The Office of Judicial Affairs has policies, tips, and resources for proper citation use, recognizing actions considered to be cheating or other forms of academic theft, and students’ responsibilities, available on their website at: https://studentconduct.sa.ucsb.edu/academic-integrity. Students are responsible for educating themselves on the policies and to abide by them.

Furthermore, for general academic support, students are encouraged to visit Campus Learning Assistance Services (CLAS) early and often. CLAS offers instructional groups, drop-in tutoring, writing and ESL services, skills workshops and one-on-one consultations. CLAS is located on the third floor of the Student Resource Building, or visit http://clas.sa.ucsb.edu/.

An important reminder is that you do not put your work on a public repository. There have been cases in the past where some students found and copied other students’ code in public repositories on GitHub. Unfortunately, in such situations, it can be tricky figuring out who copied from whom, and whether both parties participated in this willingly. Using version control systems is good software engineering practice, and we do not discourage it. However, if you are using common source code hosting sites like GitHub and GitLab, they both allow you to create private repositories for free and you should use private repositories for this class.

Accommodations for disabilities

Students with disabilities may request academic accommodations for exams online through the UCSB Disabled Students Program at https://dsp.sa.ucsb.edu/. Please make your requests for exam accommodations through the online system as early in the quarter as possible to ensure proper arrangement.

Managing stress

Personal concerns such as stress, anxiety, relationships, depression, cultural differences, can interfere with the ability of students to succeed and thrive. For helpful resources, please contact UCSB Counseling & Psychological Services (CAPS) at 805-893-4411 or visit http://caps.sa.ucsb.edu/.

Copyright, Recording, Privacy Notice:

  1. I will be recording the lectures, and plan to post them on the course website or GauchoSpace.
  2. I reserve the sole right to record lectures, publish the recording, and derivatives thereof. You may not record lectures on your own devices.
  3. I encourage everyone to participate in the lectures online in the same way you would participate in an off-line setting. In order to participate in class you must give your consent to be recorded.
  4. The default setting on Zoom for your microphone and camera will be OFF/MUTE. By turning the camera or microphone on you give your consent to be recorded.

Standard Disclaimer

This syllabus is as accurate as possible, but is subject to change at the instructor’s discretion, within the bounds of UC policy.

Readings

Complete these readings before the listed week number.

Lecture Recordings

Lecture recordings can also be found on Gauchospace.

Tutorial Videos

The following are tutorial videos developed by students from UCSB and CSU Chico. Their channel is called CodeWitUs. As we cover more topics in class, more tutorials will be linked below.

Labs

Homework