CS16: Problem Solving with Computers I

Quick Info

Instructor: Mara Downing
    mara.downing@ucsb.edu
    Please start all subject lines with "CS16"

TAs: Joseph Ng, Yeganeh Aghamohammadibonab, Weixiang Yan

For computer science questions, communication through the course Piazza is preferable instead of email.

Lectures: 9:30pm--10:45am Tuesday and Thursday at LSB 1001

Sections: Office Hours:
Mara Downing 2:00pm--4:00pm Tuesday in Phelps 3525
1:00pm--3:00pm Thursday on Zoom (link on course Canvas)
Joseph Ng 1:00pm--3:00pm Monday in Phelps 3525
Yeganeh Aghamohammadibonab 10:00am--Noon Wednesday in CS TA Trailer 936
Weixiang Yan 3:00pm--5:00pm Friday in Henley Hall 2118

Syllabus

Lectures will be held on Tuesdays and Thursdays from 9:30am to 10:45am. There are three discussion sections on Wednesday, at 12:30pm, 2:00pm, and 3:30pm. This class is being held in person, so you are expected to attend in person. However, if you are unable to attend a class in person the lecture slides will be available on the course Canvas. I will additionally attempt lecture recordings---please email me for access to a recording if you have missed a class. However, do not rely on these as technology does not always work as intended. Please do not share lecture recordings outside of this class.

Sections will be held in person. They are a time to start on the lab for that week and get help if you need it. Please do your best to attend each week (but of course, if you feel sick, stay home and keep everyone safe). We will have a zoom office hours option every week if you are unable to come in in person and would like help on the labs/homework assignments.

Office hours are listed in the table above (Quick Info section). If you are able to come to an in person office hour instead of zoom, please do so---we want to make sure there is time in zoom office hours for students who are quarantining or otherwise unable to attend an in-person meeting.

Pandemic Note

If you are feeling sick, please stay home from lecture or mask properly as instructed by campus and CDC guidelnes---this includes all airborne contagious illnesses. In the unlikely event that the state, county, or school reinstates a mask mandate, I will be requiring properly worn masks at all times during lecture and section.

Learning Objectives

Students will be able to

Course Resources

Piazza: The course Piazza should be your primary form of communication for course content related questions (I will cover extensions and other extenuating circumstances later). If your question contains a significant portion of lab code (in general, consider this to be more than 1 line of code), please limit the question to 'instructors' so as to not share partial solutions with the class. Otherwise, allowing everybody to see your question is helpful for quick responses, as there are many more students than instructors available to answer.

Github: We will have a course Github organization for all of the coding assignments: https://github.com/cs16u24

Canvas: Announcements about released homeworks and labs will be posted on the Canvas site for this course. Lecture slides will also be posted shortly before each lecture.

Course Website: https://sites.cs.ucsb.edu/~maradowning/cs16u24/. All assignments will be posted on the course website, as well as announced in class.

Canvas: Announcements about released homeworks and labs will be posted on the Canvas site for this course. Lecture slides will also be posted shortly before each lecture.

Optional Textbook: C++ Primer, 5th edition. This is an excellent resource for C++, memory management, and data structures. I will do my best to list the relevant sections for each lecture. However, this textbook is optional, and you will be able to learn all of the information in this class from the lectures and assignments.

Assessment

Homework assignments will be released every Monday morning and due on Thursday at 11:59pm on Gradescope. These assignments will not involve submitting any code, but will be on the concepts from the week and may involve analyzing code or writing briefly how you would approach a problem if you were asked to write code for it.

Lab assignments will be released every Wednesday morning and due the following Tuesday at 11:59pm through Github. For these assignments, you will submit a two question response on Gradescope to indicate that you have finished the lab---this will let me know when I can begin grading your Github repository.

The midterm and final exams will in lecture, on the Thursday of the exam week. If you absolutely cannot take the exam during the allotted time, please reach out to me as soon as possible so we can find a workable solution. If students are taking the exam late, I ask that no one discuss the exam with their classmates until every exam has been completed. This includes if you know your friend already took it, you still cannot discuss it with them until I've indicated that all exams have been turned in.
For the final exam in particular, delaying the exam will be incredibly difficult, as I have a non-negotiable deadline for final grades for this course, and any delays near or past that deadline will need to go through more official routes in the school.
The exams will be closed-note, and you can bring one 8.5x11 note sheet (typed or handwritten, but you must prepare it yourself). The exams will focus on conceptual understanding---incorrect syntax will not be marked down unless it is incorrect in a way that significantly changes the meaning of your code.

At the end of every lecture we will have a quick quiz on Canvas; these are graded by completion only. The purpose of the quiz is to give you a quick review at the end of lecture of the most important topics we covered in class, and to give me an overall sense of the class' understanding of the material so I can decide if we need to spend more time on certain topics. This quiz will have 3 multiple choice questions, and you are free to discuss with anyone while completing it. After the quiz, we will have a short discussion of the questions and answers before the end of lecture. You only need to complete 80% of the quizzes to get full quiz credit, and if you complete more than 80% they will begin to count as (minimal) extra credit.

I will not apply any traditional grade curving, where there is a certain number of each letter grade available to be given to students. This approach promotes competition in a classroom and directs the focus away from learning the material. Any adjustments I make to grades will be in your favor, and applied to all students equally. For example, at my discretion, I may apply grade scaling to a particular assignment or exam, in which all students will have the same number of points added to their final score on the assignment.

We will be using a standard 10-point grading scale:
[93-100] A
[90-93) A-
[87-90) B+
[83-87) B
[80-83) B-
[77-80) C+
[73-77) C
[70-73) C-
[60-70) D
< 60 F


Extensions: Each assignment on Gradescope may be turned in up to 24 hours late without a formal extension. For further extensions, please email me (not the TAs) directly. You can provide as much information as you wish when asking for an extension, but at minimum I expect a brief half-sentence of explanation, the assignment(s) you wish to extend, and the date you expect to be done by. Below is an example of an extension request:

Hi Mara,
I am sick and would like an extension on Homework 4. I plan to have it done by the end of December 7.
Thanks,
[Student]

I grant extensions very leniently---while the due dates are present to keep you on track and progressing in the course (as well as allow me to give feedback in a timely manner), if this is not possible I am happy to grant extensions. I only ask that you ask for an extension before the assignment's deadline.

There will be a date at the end of the quarter (Friday of Week 10) by which all assignments must be turned in to allow for on-time grading. If you need an extension past that date, contact me so we can fill out official forms to mark the course as "incomplete" and extend your grading deadline. Keep in mind that the school is less lenient than I am on granting these extensions.

Academic Honesty: For homework and labs, what you turn in must be your own work. However, you can absolutely discuss the questions and coding with your classmates, as the purpose of these assignments is learning. Common sense applies---if you are checking homework answers, every person checking answers should have already attempted all problems themselves and bring their own possible answers to the discussion. If you are discussing a coding assignment, you should not show a classmate your code if they haven't started yet, and definitely not let them copy your code, but if you're looking for bugs it is absolutely allowed to have someone read over your shoulder and try to help you find an error. Please list the people you discussed a homework or lab with on your submission. Refer to https://studentconduct.sa.ucsb.edu/academic-integrity for more information on academic integrity.

Is Plagiarism: Is Not Plagiarism: All instances of plagiarism must result in an official report (by me) to the office of academic integrity. Beyond that, my most common response will be to offer either a 0 on the assignment or completion of a replacement assignment using the same concepts for partial credit.

Generative AI: Due to the creation of ChatGPT, I have a few key pieces to state on how it impacts this course.
Using ChatGPT or any other code generation tool to solve assignmets in this course is considered plagiarism.

The exams will be in person for this reason, as many exam questions will be solvable with ChatGPT and I wish to test your knowledge, not your ability to use AI.

I also firmly believe that the material in this class is valuable to learn, even if AI becomes able to do all of these coding tasks in the near future: For some homework questions, I will present a prompt and the generated code from ChatGPT and ask you to find and fix the errors made by ChatGPT.

Grading-related FAQ:
Extra Credit: If I have extra credit questions, they will be for the entire class but not to individual students---I will not grant individual extra credit assignments.
I can make mistakes---do not hesitate to reach out if I've taken points off for something incorrectly.
The labs will have a simple rubric---there will be some points for passing a given sample test (which I will provide so you can test it on your own before submission), some points for passing a larger set of test cases correctly, and then the majority of points will be for conceptual understanding, where any errors are weighted based on whether or not they are related to the specific concept the assignment focuses on.
As is hopefully expected, I will not grant extra points just because you ask.

Contacting Me

For extensions and any other administrative-related concerns, please email me directly.

Technology in the Classroom

For the quizzes, please bring a device that can access the internet. For the rest of lecture, you are free to use technology for taking notes, provided your use of technology does not detract from other students' ability to focus on the 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/.

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.

Final Note

The most important part of a college course is learning the material---all of the assignments, tests, grading schemes, and course policies are just specifications designed to both promote and assess the learning you are doing in the classroom.
My goal in designing the structure of this course is to make it possible for you to learn all of the material in a flexible way that understands that you have full lives and commitments outside of the classroom. I also understand, however, that no class can be perfect for every single student that takes it. If you believe a personal adjustment to the course structure will help you learn better, please feel free to come talk to me about it.

Acknowledgements

The accommodations for disabilities, managing stress, and standard disclaimer sections are taken from Zach Sisco's syllabus for this course in U21.