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.
Schedule
For lab, lecture and office hours please check the course Google Calendar For hw, lab and exam schedule, please check the assignment calendar
Grading
Grade breakup by evaluation component
- Lecture and section partcipation: 2%
- Homeworks: 8%
- Lab assignments: 20%
- Projects: 20%
- Midterm Exams: 20%
- Final Examination : 30%
Thus attendance is required, and reading the assigned readings is required.
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.</p>
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.) # 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. 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 <p>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.