The following is our tentative syllabus for the course,
Acquire the Course Monorepo by clicking here Do not do a 'git pull' until class officially starts (Occasionally I make changes/spelling corrections).
Please create your own private repo on github.ccs.neu.edu and add myself and the TA as collaborators. Please copy over my monorepo into your own private repo that you created. Please do not fork and submit your changes to the class monorepo.
Module 1 - Introduction to C and Github | A1 and Lab
Module 2 - Data Structures | A2 and Lab
Module 3 - Algorithm Analysis | A3 and Lab
Module 4 - Other Sorts | A4 and Lab
Module 5 - Graph Algorithms | A5 and Lab
Module 6 - More Alg. Strategies
Week 4 - Week 8
Module 7 - Midterm Exam
Module 8 - Compiling and Assembly | Lab7
Module 9 - Compilers and Linkers | Lab8
Module 10 - Processes & Memory | Lab9
Module 11 - Concurrency | Lab10, A6
Module 12 - Networking with Sockets | Lab11, A7
Projects will be interactive programs developed in C++. They can be a game, finance engines, etc. For the project, you can use any platform and IDE you prefer (Visual Studio, Xcode, etc.). Code can be written using C++98 or C++11 standards. The project code must be hosted on the CCIS GitHub (at https://github.ccs.neu.edu/) in the account of one of the group members. The project will be worth 2 assignments
The advanced feature will require independently researching, understanding, and using some external API, library, or SDK. Each project must include at least one advanced feature. Example advanced features include
Presentation: In-class group presentation of projects last day of classes.
The final project is due Monday Aug 19 at 6am
C++ Language Tutorial, cplusplus.com
These tutorials explain the C++ language from its basics up to the newest features of ANSI-C++, including basic concepts such as arrays or classes and advanced concepts such as polymorphism or templates. The tutorial is oriented in a practical way, with working example programs in all sections to start practicing each lesson right away. http://www.cplusplus.com/doc/tutorial/
You can also download the entire tutorial as a PDF. http://www.cplusplus.com/files/tutorial.pdf
Bruce Eckel; Thinking in C++, Volume 1 & Volume 2
(Free Electronic Book) http://mindview.net/Books/TICPP/ThinkingInCPP2e.html
John Regehr (University of Utah) on "undefined behavior" in C++
A Guide to Undefined Behavior in C and C++, Part 1 http://blog.regehr.org/archives/213
A Guide to Undefined Behavior in C and C++, Part 2 http://blog.regehr.org/archives/226
A Guide to Undefined Behavior in C and C++, Part 3 http://blog.regehr.org/archives/232
Chris Lattner (LLVM group) on "undefined behavior" in C++
What Every C Programmer Should Know About Undefined Behavior #1/3
What Every C Programmer Should Know About Undefined Behavior #2/3
What Every C Programmer Should Know About Undefined Behavior #3/3
I would also recommend my favorite C++ book, Effective C++, Third Edition, 2005, by Scott Meyers
Examines how to program in C++ in a robust and safe manner. Reviews basics, including scoping, typing, and primitive data structures. Discusses data types (primitive, array, structure, class, string); addressing/parameter mechanisms (value, pointer, reference); stacks; queues; linked lists; binary trees; hash tables; and the design of classes and class inheritance, emphasizing single inheritance. Considers the instantiation of objects, the trade-offs of stack vs. heap allocation, and the design of constructors and destructors. Emphasizes the need for a strategy for dynamic memory management. Addresses function and operator overloading; templates, the Standard Template Library (STL), and the STL components (containers, generic algorithms, iterators, adaptors, allocators, function objects); streams; exception handling; and system calls for processes and threads.
There will be no required textbook for this course. However, these resources have been vetted, and I recommend for mastery (while taking this course, and reviewing later on in your career).
The grade system follows the University Grading System.
Part of what makes Northeastern University unique, is our diverse cohort of students, faculty, and staff. In order to support this, Northeastern 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 University experience. If you have a disability that requires accommodations, please contact the Student Accessibility Services office at DRC@northeastern.edu or (617) 373-2675 to make an appointment with the Disability Resource Center representatives in 20 Dodge Hall to determine appropriate accommodations.
Students and instructors are to follow the Northeastern policies on these important issues.
Students participating in varsity athletics(this does not include club sports or intramurals) or other University sanctioned events may have the need for a make-up. Please contact me in advance of such events, so that appropriate accommodations can be made.
Occasionally, other life events and circumstances occur that were not planned. If this is the case, please e-mail me privately.
E-mailing me asking for extensions just because is unfortunately not fair to your classmates. The 10% penalty for each day late has to be enforced so I do not get taken advantage of.
Students who do well in this course tend to show up to the course consistently, participate, and engage with their peers. Come to class, come on time, and build good habits! In-Class activities that are not attended are a zero.
Copyright © 2019 Vidoje Mihajlovikj - All Rights Reserved.