Academics / Courses / DescriptionsCOMP_SCI 211: Fundamentals of Computer Programming II
VIEW ALL COURSE TIMES AND SESSIONS
Prerequisites
COMP_SCI 111 and 150Description
CATALOG DESCRIPTION: CS 211 teaches foundational software design skills at a small-to-medium scale. We aim to provide a bridge from the student-oriented How to Design Programs languages to real, industry-standard languages and tools. In the first half of the course, you’ll learn the basics of imperative programming and manual memory management using the C programming language. In the second half of the course, we’ll transition to C++, which provides abstraction mechanisms such as classes and templates that we use to express our design ideas. Topics include expressions, statements, types, functions, branches and iteration, user-defined types, data hiding, basic UNIX shell usage, and testing.
- This course is a required Core course in the CS curriculum in McCormick and Weinberg
- Students are strongly advised to take CS 150 before CS 211.
REQUIRED TEXTBOOK: N/A
COURSE INSTRUCTOR: Branden Ghena (Spring) & Joe Hummel (Fall & Winter)
COURSE COORDINATOR: Prof. Sara Owsley Sood
PREREQUISITE: COMP_SCI 111 and 150
DETAILED COURSE TOPICS:
- C/C++
- Introduction to software engineering.
- Basic data types, variables, computer arithmetic, expressions, parentheses.
- Basic I/O – cout, cin.
- Introduction to classes – defining one's own data types
- Flow of control – sequential, test-and-branch, and iteration. Boolean expressions.
- Arrays, pointers, and strings.
- Functions: call by value and call by reference, references vs. pointers, stack frames.
- Function overloading
- INTRODUCTION TO CLASSES:
- Structures and classes, data hiding and encapsulation.
- Public and private members, constructors, unions.
- Interface vs. implementation.
- Class destructors and copy constructors, the = operator, deep versus shallow copies.
- C++ operator overloading.
- Heap space, the new/delete operators.
- Inheritance and derived classes, is-a hierarchies and composition of classes.
- Virtual functions and polymorphism.
- Linked list processing: stacks and queues, trees and recursion.
- Introduction to UNIX – processes, file management, redirection and piping, make files.
GRADES: Varies by instructor