Advanced Programming Techniques

Course
Identifier: 
COM S 327

Offered during Fall and Spring Semesters each year.

  1. Credits and contact hours: 3 credits, 3 contact hours
  2. Instructor’s or course coordinator’s name: James Lathrop
  3. Text book, title, author, and year: None required
  4. Other supplemental materials: The C++ Programming Language, Bjarne Stroustrup; The C++ Standard Library, Nicolai M. Josuttis; The C Programming Language, Kernighan and Ritchie

Specific course information

  1. Brief description of the content of the course: Object-oriented programming experience using a language suitable for exploring advanced topics in programming. Topics include memory management, parameter passing, inheritance, compiling, debugging, and maintaining programs. Significant programming projects.
  2. Prerequisites or co-requisites: Minimum of C- in COM S 228 and MATH 165
  3. Required, elective, or selected elective? Required

Specific goals for the course

  1. Specific outcomes of instruction: By the end of the course students should...
  • Be able to produce efficient and correct C/C++ programs of significant lengths from specifications.
  • Be able to understand and use advanced C/C++ features in software development and maintenance. (1)
  • Be able to write and debug large C/C++ programs based on English description or pseudo code. (2)

Brief list of topics to be covered

  • Unix
  • Comparison of C/C++ with Java
  • Stages of the compiler, source code organization
  • Using libraries
  • Writing header and make files
  • Types, operators
  • Local and Global variables
  • Type modifiers
  • File input/output
  • Project 1
  • Pointers and Arrays
  • C structs, functions, prototypes
  • Parameter passing by value and by reference
  • Strings
  • Memory management with malloc, realloc, free
  • Debugging with Valgrind and gdb
  • Preprocessor
  • C++ references and consts
  • C++ inline functions and overloading
  • C++ classes
  • Namespaces
  • Project 2
  • C++ exception handling
  • Inheritance and polymorphism in C++
  • C++ templates
  • Memory management
  • C++ standard template library