This course is an introduction to computer science using the C++ Programming Language.
The course Piazza page is a forum where you may ask questions. This is a forum you may ask other instructors/students clarifying questions (read: Do not ask for answers) or for helpful tips. You can ask questions anonymously or using your name. Using this resource will often be much faster than e-mailing the instructor directly.Prerequisites: High School Algebra recommended. No prior programming experience is necessary.
There will be no required textbook for this course. However, you may find these resources useful.
By the end of this course, you will be ready to program in C++, and be prepared for more advanced programming material (Comp 15 -- Data Structures, self-study, programming projects). More officially, you will:
|Unit||Week.Lecture||Topic||Assignment Due Date||In-Class Activity | Lab||Note||Video|
|1.2 5/24||Introduction to Programming||
||Activity 1 - First Program | Lab 1 - Terminal and Hello World||Additional Readings: Chapter 0 through 1.1||1-4|
|2.1 5/29||--No Class-- Holiday||
||-- N/A --|
|2.2 5/31||Data Representation||
||Activity 2 - Working with Data | Lab 2 - Manipulating Data||Additional Reading on Variables | Learncpp variables||5-19|
|3.1 6/5||Decision Structures||
||Activity 3 - Decisions, decisions, decisions||Control Structures||20-28|
|3.2 6/7||Functions 1||
||Activity 4 - Fun with Functions | Lab 3 - Guessing Game||
Short Style Guide
|4.1 6/12||Arrays and Strings||
||Activity 5 - Strings and Arrays | lab 4 - Random Password Generator||
|4.2 6/14||File I/O, memory, multi-dimensional arrays||
||Activity 6 | Lab 5 Image Filter| image.ppm||File I/O|
|5.1 6/19||STL Data Structures(Stack and Vector) with Tomoki||
Mike in Spain -- Guest lecture
|5.2 6/21||Structs -- Guest Lecture Prof. Guyer||
||Lab 6 - Student Database||
Mike in Spain -- Guest lecture
||Activity 8 | Lab 7 - Swap||
Pointers from Stanford
|6.2 6/28||Pointers 2 / Memory Management (new and delete)||
||Activity 9 | Lab 8||Dynamic Memory|
|7.1 7/3||Optional Review Session -- Submit Questions here||
||-- N/A --||Mike out of Town|
|7.2 7/5||Functions 2 (Recursion and Lambdas)||
||Activity 10 - More FUNctions | Lab 9 - Recurse, recurse, recurse||
Computerphile Recursion  
|8.1 7/10||Midterm Review Sheet from review session||
||-- N/A --|
|8.2 7/12||Object-oriented Programming (Structs, Classes)||
||Midterm Review | Lab 10 - Vector Implementation||
Deep and Shallow Copy
|9.1 7/17||Object-Oriented Programming 2 - Interface and Implemetation||
||Activity 11 | Lab 11 Stack||
|9.2 7/19||Object Oriented Programmin 3 - Inheritance||
||Activity 12 | Lab 12 Animal Kingdom||Inheritance|
|10.1 7/24||Searching and Sorting Data||
||Activity | Lab - Sorting Performance|
|10.2 7/26||Algorithms + Data Structures (Hashmap)||
||Activity | Lab Hashmap||
|11.1 7/31||Testing your Code (Assertions, Exceptions, Writing Unit Tests)||
||Activity (Part 1) | Lab Start Project||
|11.2 8/2||Final Exam Review (Topics) Review 1 and Review 2 | Advanced C++ 11/14/17 features||
||Course Evaluations | Final Project work day round 2|
|12.1 8/7||Final Exam (1 3x5 Notecard allowed)||
||-- NA --|
|12.2 8/9||Introduction to C and Python||
||-- TBD --|
We will be using the Clang Compiler, which is available on almost every operating system. A pre-built binary (the executable program) can be downloaded here.
Any basic text editor will do for writing code.
Every class we will have an activity and a lab. They are each listed in the syllabus. Labs are important, because to become a good computer scientist, you must practice writing, compiling, testing, and running your code. You will write most of your code from scratch, similar to the assignments. You will submit your lab at the end of class, and it will be graded for effort, completeness, and contribute to your attendance/Participation score.
Please find below the grading scale that will be used for this course.
These are some general tips for becoming a successful programmer in this course.
I do not take attendance, and you are not required to attend lecture. That being said, you need to attend the lab portion of the class--and I will take attendance. Students who do well in this course tend to show up to the course consistently, participate, and engage with their peers.
Part of what makes Tufts University unique, is our diverse cohort of students, faculty, and staff. In order to support this, Tufts is committed to providing equal access and support to all qualified students through the provision of reasonable accommodations so that each student may fully participate in the Tufts experience. If you have a disability that requires accommodations, please contact the Student Accessibility Services office at firstname.lastname@example.org or 617-627-4539 to make an appointment with a Student Accessibility Services representative to determine appropriate accommodations.