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
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
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.
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) |
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.
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.
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.
Pre-course essay (due end of week 2): Submit a .pdf file to Gradescope of your short pre-course essay that describes what you hope to learn in class, how it relates to your life and goals, and what may help you reach those goals.
Post-course essay (due end of week 10): Submit a .pdf file to Gradescope of your short post-course essay that describes what you have learned in this class, how it relates to your life and goals, and what activities you think helped you learn the most.
(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.
Problem Solving with C++. Walter Savitch, Edition 9 or 10.
ISBN-13: 978-0133591743
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!
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:
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:
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.
Complete these readings before the listed week number.
Lecture recordings can also be found on Gauchospace.
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.