Syllabus
This document and others linked within it should be your PRIMARY source for understanding the expectations of this course. Be sure to read it carefully. You must contact the instructor for clarification if you receive information from any another source that is in contradiction to what is provided below.
Basic Facts
- Course Web Site: https://ucsb-cs24.github.io/f19/
- Instructor: Lawton Nichols
- Lecture: T/Th 5:00pm–6:15pm, CHEM 1171
- TAs: Xiaotong (Sherry) Chen, Vaishali Surianarayanan
- Tutors: Aditya Nadkarni, Surya Purgal, Bryan Terce, Erin Woo
- Lab (50 minute closed lab sections), Thursdays: 1pm, 2pm, 3pm, and 4pm ATTENDANCE REQUIRED if you are working with a pair partner.
Resources
Required Resources
-
Required textbook: Michael Main and Walter Savitch. Data Structures and Other Objects Using C++ (4th edition), Addison-Wesley, 2011.
-
Recommended textbook: Problem Solving with C++, Walter Savitch, Edition 10 (edition 9 also works). Available for purchase at the UCSB book store
-
Peer Instruction : iClickers: The course lectures will follow a Peer Instruction format, a teaching model which places stronger emphasis on classroom discussion and student interaction.
Graded Work and Grade Policy
Evaluation components
- Homeworks (i.e., Quizzes): 10%
- Lab Assignments: 15%
- Programming Assignments: 18%
- Midterm Exams: 30%
- Final Examination: 25%
- Participation (i.e., iClickers): 2%
I will drop the lowest two quizzes. For late labs and programming assignments, you will receive a 15% penalty for each day the lab/programming assignment is late (deadlines are strict, and it’s considered a day late even if it’s only late by 1 minute). There are no late submissions allowed for any extra credit assignments.
Grade assignment policy
A+ | 97-100 | A | 93-97 | A- | 90-93 |
B+ | 87-90 | B | 83-87 | B- | 80-83 |
C+ | 77-80 | C | 73-77 | C- | 70-73 |
D+ | 67-70 | D | 63-67 | D- | 60-63 | F | Below 60 |
Curving: The grade scale above 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 be 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.)
What you should know to be ready for CS24
Here’s the list of a few important things you’ll need to know to be ready for CS24.
- A few of the basic data types of C++, including at least, int, double, char, bool, string
- The basic control structures of C++ (if/else, while, for etc.)
- Defining functions in C++, and passing parameters to functions in three different ways (by value, by pointer, and by reference)
- Scope and lifetime of variables in C++
- The use of “const” with parameters to functions
- Using arrays in C++, and C-strings (null-terminated character arrays)
- How arrays are passed to functions, and the relationship between arrays and pointers
- Defining and working with structs in C++
- Using structs to create singly linked lists where the space for the list nodes is allocated on the heap
- The difference between space allocated on the stack (e.g. local variables) and space allocated on the heap (with the new and delete operators)
- Converting from binary to decimal, octal, and hex, and back again—and how this relates to how C++ programs store various kinds of data in memory.
- The basic principles of recursion, and some idea of when a recursive solution is appropriate.
Course objectives
- Students learn object-based programming techniques: abstraction and encapsulation.
- Students learn to specify, implement and apply lists, trees and other data structures.
- Students are exposed to complexity analysis, and learn to distinguish algorithms and data structures on the basis of efficiency.
- Students learn (and practice) to produce better programs more quickly and with less stress.