Course Information/Syllabus


Software created in C++. You will be able to work on large projects like this once you master C++. Some new C++ programmers!

Course Description



Some sample videos from the course.

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.

Resources
There will be no required textbook for this course. However, you may find these resources useful.


Course Objectives


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:


Schedule/Road Map


The following is our tentative syllabus for the course. I will announce in class or through e-mail any major changes.
I have also posted some videos that can be viewed before or after class as refreshers. Note that they are not substitutes for the lecture and are optional.
Unit Week.Lecture Topic Assignment Due Date In-Class Activity | Lab Note Video
1 Programming Constructs
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
PS 1 Out
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
Functions
Function Templates
29-32
6/11 PS 1 Due | PS 2 Out
4.1 6/12 Arrays and Strings
-- --
Activity 5 - Strings and Arrays | lab 4 - Random Password Generator Arrays
Char Sequence
Strings
2 Working with Data
4.2 6/14 File I/O, memory, multi-dimensional arrays
-- --
Activity 6 | Lab 5 Image Filter| image.ppm File I/O
6/18 PS 2 Due
5.1 6/19 STL Data Structures(Stack and Vector) with Tomoki
-- --
Activity 7 Mike in Spain -- Guest lecture
Vector
Stack
5.2 6/21 Structs -- Guest Lecture Prof. Guyer
-- --
Lab 6 - Student Database Mike in Spain -- Guest lecture
structs
More Structs
6/25 PS 3 Out | s1.txt | s2.txt
6.1 6/26 Pointers
-- --
Activity 8 | Lab 7 - Swap Pointers
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 [1] [2]
Constructors/Destructor
8.1 7/10 Midterm Review Sheet from review session
-- --
-- N/A --
-- 7/11 PS 3 Due | PS 4 Out--
3 Software Engineering
8.2 7/12 Object-oriented Programming (Structs, Classes)
-- --
Midterm Review | Lab 10 - Vector Implementation classes
Deep and Shallow Copy
9.1 7/17 Object-Oriented Programming 2 - Interface and Implemetation
-- --
Activity 11 | Lab 11 Stack Classes 2
Preprocessor
9.2 7/19 Object Oriented Programmin 3 - Inheritance
PS 4 Due
Activity 12 | Lab 12 Animal Kingdom Inheritance
-- 7/20 | PS 5 Out--
10.1 7/24 Searching and Sorting Data
-- --
Activity | Lab - Sorting Performance
10.2 7/26 Algorithms + Data Structures (Hashmap)
-- --
Activity | Lab Hashmap Map
Iterators
Hash Table
7/30 PS 5 Due | PS 6 Out
11.1 7/31 Testing your Code (Assertions, Exceptions, Writing Unit Tests)
-- --
Activity (Part 1) | Lab Start Project Assert
Exception
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
PS 6 Due
-- TBD --

Coding Environment


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.


Programming Assignments (PS)


Class Assignments


Activities and Labs


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.


Assessment


Please find below the grading scale that will be used for this course.


Tips and Guidelines


These are some general tips for becoming a successful programmer in this course.
General Tips:


Acadmic Integrity and Non-Discrimination Policies


Students and instructors are to follow the Tufts policies on these important issues.
Tufts Non-Discrimination Policy
Tufts Academic Integrity Policy


Lateness and Attendance Policy


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.


Accessibility


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 accessibility@tufts.edu or 617-627-4539 to make an appointment with a Student Accessibility Services representative to determine appropriate accommodations.