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.
Course Staff
Course instructor: Diba Mirza
- email: dimirza@cs.ucsb.edu
- Office hours time and location are available on course Google Calendar
- Homepage: https://www.cs.ucsb.edu/~dimirza/
Teaching Assistants
- Kirti Bandari
- Can Kizikale
TA office hours are available on our course Google Calendar
Undergraduate Tutors
- Andrew Huang
- Angela Yung
- Barbara Korycki
- Bryanna Phan
- Jimmy Le
- Natasha Lee
- Sayali Kakade
- Sean Shelton
- Sherry Li
- Shreyas CR
- Steven Fields
- Thien Hoang
The tutors will help with the labs and other instructional activities as part of a new pilot program.
Schedule
For lab, lecture and office hours please check the course Google Calendar For hw, lab and exam schedule, please check the assignment calendar
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 9. 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. As part of this you will need to own an iClicker register it on the Gauchospace). Be sure to register your clicker by the end of the first week.
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 policies
Grade breakup by evaluation component
- Lecture and section partcipation: 2%
- Homeworks/Quizzes: 8%
- Lab assignments: 40%
- Midterm Exams (2 at 15% each): 30%
- Final Examination : 20%
Less than 75% iClicker response ≡ missing a lecture
You must also read the this document with detailed course policies
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.