Course Catalog URL
Identifier
COMS 3270
Professor(s)
Last Updated: Spring 2025
Offered during Fall and Spring Semesters each year.
- Credits and contact hours: 3 credits, 3 contact hours
- Textbook, title, author, and year: None required
- 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
- 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.
- Prerequisites or co-requisites: Minimum of C- in COMS 2280 and MATH 1650
- 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:
- By the end of this course, students will be able to produce efficient and correct C and C++ programs of significant lengths from specifications.
- By the end of this course, students will be able to understand and use advanced C and C++ features in software development and maintenance.
- 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