DU Computer Science Bootcamp
Meeting Times: Mondays and Wednesdays 4-6pm in Aspen Hall North 026
Instructor: Will Mitchell
Office Hours: Mondays and Wednesdays 1-3pm and by appointment
Office Location: Aspen Hall North Suite 203
Syllabus for Systems
Syllabus for Theory
Recommended Books
- Introduction to Algorithms 3rd edition by Cormen, Leiserson, Rivest, Stein ISBN: 0262033844 Amazon
- C++ Primer 5th edition by Lippman, Lajoie, Moo, ISBN: 0321714113 Amazon
Additional Books
- Discrete Mathematics and Its Applications 7th edition by Rosen ISBN: 0073383090 Amazon - An older of edition of this is good enough
- Computer Systems: A Programmer's Perspective 3rd edition by Bryant and O'Hallaron ISBN: 013409266X Amazon - Supplemental material will be pulled from this book, but it mainly uses C as the example programming language and we will be using C++
- The C++ Programming Language, 4th edition by Stroustrup ISBN: 0321563840 Amazon - All the gory details of C++. Very useful if you end up working a lot in the language
Software
You will need a C++ programming environment. On Windows I recommend Visual Studio 2015 Community Edition. On OSX I recommend XCode. All submitted code will be graded using the department's Linux servers as the standard platform.
To connect to the department's Linux servers you will want a SSH client. It is built-in on OSX. On Windows I recommend PuTTY.
All programming assignments will be submitted using the department's Gitlab server. There is a web interface at https://git.cs.du.edu. Andrei has collected some documentation to help get you started.
Topics covered
- Monday Sept 14: The program life cycle from editor to loader. The linker errors demonstrated in class.
- Wednesday Sept 16: Boolean operators, set theory operators, quantifiers, and their application to programming. Lecture Notes
- Monday Sept 21: Representations of Integers and Floating Point Numbers. Lecture Notes
- Wednesday Sept 23: Rules of Inference, Proofs: Direct, Contrapositive, Contradiction
- Monday Sept 28: Proofs: Exhaustion, Cases
- Wednesday Sept 30: Start of processor architecture and how parameters are passed in C++. Example code
- Monday Oct 5: Review of Systems Assignment 2 and start of dynamic memory allocation
- Wednesday Oct 7: More dynamic memory allocation. Heap Errors
- Monday Oct 12: Induction
- Wednesday Oct 14: Strong Induction and Loop Invariants
- Monday Oct 19: Algorithm Analysis and Asymptotic Notation
- Wednesday Oct 21: x86-64 Assembly. Lecture Notes. In-Class Examples. GCC-Inline-Assembly-HOWTO. Intel 64 and IA-32 Architectures Software Developer Manuals
- Monday Oct 26: Sorting
- Wednesday Oct 28: Relations
- Monday Nov 2: Processor Pipeline, C++ Standard Library Part 1. Sample code
- Wednesday Nov 4: C++ Standard Library Part 2. Sample code
- Monday Nov 9: Basic Enumeration
- Wednesday Nov 11: C++ Classes. Sample code
- Monday Nov 16: Liskov Substitution Principle, RAII, Hash Tables. RAII In Class Example
- Wednesday Nov 18: Graphs, Trees, and Traversals
- Monday Nov 23: Final Exam
Assignments
All assignments need to be submitted in accordance with the submission guidelines