Fundamentals of Computer Science

Introduction to C++

8/27 Course overview and computer languages
Read Sections 1.1-1.5:
Computer tour, Computers and programs, Why programming, Problem solving, Programming (general)
8/29 Introduction to C++
Read Sections 1.6-1.9:
Language history, Programming basics, Comments and whitespace, Errors and warnings
Lab Project 0: CLion and GitHub

Variable Types, Branches/Loops, and Arrays

9/3 Types, variables, and control structures
Read Chapter 2:
Using math functions, Random numbers, Debugging, Auto, Style guidelines
Read Chapter 3:
String access operations, More string operations, Short circuit evaluation
Read Chapter 4:
Developing programs incrementally
9/5 Arrays and vectors
Read Chapter 5
Vectors, Iterating through vectors, Vector resize, Vector push_back, Arrays vs. vectors, Two-dimensional arrays

Quiz 1
Lab Project 1
Project 0 due

Functions and Recursion

9/10 User-defined functions
Read Chapter 6
Basics, Reasons for defining functions, Unit testing, How functions work, Pass by reference, Functions with string/vector parameters, Scope, Parameter error checking
9/12 Recursive functions
Read Chapter 7
Introduction, Binary search, Adding output statements for debugging, Creating a recursive function, Stack overflow
Lab Project 2
Project 1 due

Pointers and Dynamic Memory Allocation

9/17 Pointers
Read Sections 9.1-9.3
Why pointers, Pointer basics, Miscellaneous pointer issues

Quiz 2
9/19 Heap Memory
Read Sections 9.4-9.6
Operators: new and delete, Memory regions: Heap/Stack, Memory leaks
Lab Review for Midterm 1
Project 2 due

C-strings and Strings

9/24 MIDTERM 1
9/26 C-strings
Read Sections 5.13-5.15, 16.15
C strings, String library functions, Char library functions, Command line arguments
Lab Project 3

Objects and Classes

10/1 C-structs
Read Sections 16.11-16.14
Grouping data: struct, Structs and functions, Structs and vectors, Seat reservation example
10/3 C++ Classes
Read Sections 8.1-8.7
Objects; Using a class; Defining a class; Inline member functions; Mutators, accessors, and private helpers; Initialization and constructors; Classes and vectors/classes
Lab Project 4
Project 3 due

10/8 C++ Classes
Read Sections 8.8-8.14
Separate files for classes; Choosing classes to create; Unit testing; Constructor overloading; Constructor initializer lists; The 'this' implicit parameter; Operator overloading

Quiz 3
Project 4 due Friday night
10/10 Fall Break
Lab Fall Break

Classes with Pointers

10/15 Classes with dynamic memory allocation
Read Sections 9.7-9.10
Destructors, Copy constructors, Copy assignment operator Rule of three
10/17 In-class exercise: AdjList class
Read Section 9.11
A first linked list
Lab Project 5

Linked Lists

10/22 Linked Lists: Node class and LinkList class
Watch Videos 1-4 of Data Structures: Linked Lists in C++
Intro, Implementation Part 1, Implementation Part 2, Traversing
10/24 Linked Lists: fundamental operations
Watch Videos 5-9 of Data Structures: Linked Lists in C++
Insertion (conceptual), Insertion (implementation), Deletion, Recursion, Recursive printing

Quiz 4
Lab Project 6
Project 5 due

Streams and Exceptions

10/29 Streams and file I/O
Read Sections 10.1-10.5
The ostream and cout streams, The istream and cin streams, Output formatting, File input and output, Stream errors
10/31 Exception handling
Read Sections 11.1-11.3
Exception basics, Exceptions with functions, Multiple handlers
Lab Review for Midterm 2
Project 6 due

Inheritance

11/5 MIDTERM 2
11/7 Inheritance
Read Sections 12.1-12.5
Derived classes, Is-a versus has-a, Access by members of derived class, Overriding member functions, Polymorphism and virtual member functions
Lab Project 7

Templates and Containers

11/12 Templates
Read Sections 13.1-13.3
Function templates, Class templates, C++ example
11/14 STL Containers
Read Sections 14.1-14.6
Range-based for loop, List, Set, Queue, find() function, sort() function
Lab Project 8
Project 7 due

Computational Complexity

11/19 Complexity analysis
Read Sections 15.1-15.4
Searching and algorithms, binary search, O notation, Algorithm analysis
11/21 Searching and sorting algorithms
Read Sections 15.5-15.9
Selection sort, Insertion sort, Quicksort, Merge sort

Quiz 5
Lab Project 9
Project 8 due

Parallelism

11/26 Parallel searching and sorting
11/28 Thanksgiving Break
Lab Thanksgiving Break

Preparation for 221

12/3 C++ vs Java: Arrays, Functions, and Classes
12/5 Java Linked List
Lab Review for Final
Project 9 due

12/14 FINAL EXAM (9am)