Advanced Programming Techniques

Identifier
COMS 3270

Last Updated: Spring 2025

Offered during Fall and Spring Semesters each year.

  1. Credits and contact hours: 3 credits, 3 contact hours
  2. Textbook, title, author, and year: None required
  3. Other supplemental materials: The C++ Programming Language, Bjarne Stroustrup; The C Programming Language, Kernighan and Ritchie; Design Patterns: Elements of Reusable Object-Orientated Software, Gamma, Vlissides, Johnson, and Helm

Specific course information

  1. Brief description of the content of the course: We will cover the topics described above with two languages, C and C++, used as drivers. We will spend roughly half of the course on C and half on C++. We will also devote some time to programming environment, build tools, version control, and debugging; these are all concepts that you will need to understand and employ to be successful in this course and beyond.
  2. Prerequisites or co-requisites: Minimum of C- in COMS 2280 and MATH 1650
  3. Required, elective, or selected elective? Required

Specific goals for the course

After successfully completing this course, students will:

  • Understand the differences between managed languages (e.g., Java) and unmanaged languages (e.g., C and C++)
  • Understand and be able to use simple build systems (e.g. make)
  • Be able to design and build large programs from specification
  • Be able to use third-party libraries in programs
  • Be able to read, write, and modify C and C++ programs
  • Understand memory modification techniques for C and C++
  • Understand C++ templates and the standard template library

This course has three major ABET outcomes:

  1. By the end of this course, students will be able to produce efficient and correct C and C++ programs of significant lengths from specifications.
  2. By the end of this course, students will be able to understand and use advanced C and C++ features in software development and maintenance.
  3. By the end of this course, students will be able to write and debug large C and C++ programs based on English descriptions or pseudocode.

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