15/SP CSC 306 Software Development in C++

Study Guides

Week 3 Quiz
Week 5 Test
Week 8 Test
Final Examination

Homework Assignments

Homework 1


Lexical Analysis Project
Lexical Project Shell (MinGW)
Lexical Project Shell (VS 2013)

Parser Project
Parser Project Test Files
Internal Representation Project
Instructor code and test files
Execution Phase Project
Execution Phase test files

Group Project

Group Projects


C++ reference

Course Description

Object-Oriented Design and implementation of large scale software using C++. Topics include inheritance, polymorphism, virtual functions, and the STL. Prior knowledge of C++ is not required. Extensive programming required. Prerequisite: CSC 161 and knowledge of C++ or Java.

Course Overview

Besides topics introducing various features of C++, the course will focus on a series of projects that will culminate in the implementatioin of an interpreter for a small programming language. The series of projects will be used as a vehicle to illustrate the design, implementation, and testing of ``large" software project.

Instructor Accessibility

My office is in Carnegie Hall 311 B. You can stop by in person, or call my office at 630-637-5174. If I am not at the office and you need immediate attention, you can call me at home at 630-759-2110. You can email me at gcmuganda@noctrl.edu. Spring term office hours are Tuesdays and Thursdays 3:50 - 6:20 pm. I can also see you by appointment.

Course Textbook

The class textbook is The C++ Programming Language, Bjarne Stroustrup, Pearson Education, 2013. Here is a link to the book.

The book is meant to be used as a C++ resource and reference. The course lectures will not be based on the book: rather, the book will be used by students as a resource for C++ matters not explicitly covered in lecture, and for additional examples and explication of C++ material covered in lecture.

Course Outline

There will be two main threads of discussion during lectures. One thread will focus on C++ topics, and will cover general use of the language as a tool for software development. Short programs that use various C++ concepts will be assigned as homework to help students solidify their understanding of the C++ language.

A second thread will discuss software development topics, focusing on the design, implementation, and testing of a "large" software projects. The emphasis here will be on how to go about designing and developing large projects. Students will implement a series of projects that build on each other and culminate in the construction of an interpreter for a small language. The projects are designed to give students experience both with software development, and with features of C++. There is no text for this part of the course, and the main resource will be the instructor's lectures. Language-implementation information is difficult to find in easily digestible form in printed books or online, so be sure to take good notes during lectures.

Toward the end of the course, students will work in teams of two or three to design and implement another project. Details on the team project will be provided later.

Tentative Order of Coverage for C++ Topics

The following order of discussion is tentative, and will likely be adjusted as the course progresses. In particular, order of course topics will be changed as needed to accomodate the implementation of the language interpreter project.

Schedule of In-class Tests

There will be a quiz on Thursday of Week 3 (5%), a midterm on Thursday of Week 5 (13%), a test on Thursday of Week 8 (13 %), and a final exam (24 %). All homework or programming assignments done outside of class will account for a total 45%. Shorter assignments will weigh less than major projects.

Most of the homework will be short programs focused on a few C++ concepts, and will usually be due within two days of being assigned. Course projects will typically be due within a week of being assigned.

Email Communication

All assignments and projects must be submitted via email using your College email account. and must have a subject that begins with CSC 306 Submission, followed by the assignment or project being submitted. For example, CSC 306 Submission of Project 1, or CSC 306 Submission of Homework 3. When asking a question or requesting help via email, your subject must begin with CSC 306 Help: ... Emails that violate this criteria will not receive prompt attention.

Late Policy

All assignments and projects should be turned in by midnight on the day due. A 10% penalty will be assessed on projects turned in late, but in general this penalty will not be levied if the assignment is turned in before I have completed grading the batch of assignments to which it belongs. No assignment/project turned in after the due date for the next assignment/project will be graded. I will make an exception to this rule for students who have been coming to see me for help, where I judge that the student is reasonably close to getting the assignment or project done.

Policy on Missed Tests and Quizzes

In-class tests and quizzes missed without a legitimate excuse cannot be made up. If you have to miss quiz or test (for some legitimate reason) please let me know at least a week before and I will make arrangements for a make up. In the event some unexpected reason beyond your control prevents you from being in class on the day of a test, contact me as soon as possible by phone or email to arrange a make up.

Ethics Policy / Academic Dishonesty.

Students may discuss the assignments and projects with other students, as long as such discussions result in a transfer of understanding rather than a transfer of code. Except on the designated team project, students should not write their code together. I reserve the right to require a conference with any group of students whenever I notice suspicious similiraties in their code. Code is suspiciously similar when it is the same except for renaming of identifiers and/or trivial rearrangements of code. Under these circumstances, I will ask students to explain the meaning of the code, and to write code to solve a different but similar problem in my presence. Unethical collaboration will be established if such a student fails to explain the submitted code, or to solve the similar problem. If unethical collaboration is established, the students involved will receive a mark of zero for the assignment or project, and will be reported to the dean.