Course Description: Introduction to programming using a high level programming language. Conditionals, I/O, Files, Functions, Classes, Pointers, Dynamic Memory, Linear Linked lists, Recursion and Multi-Dimensional Arrays. Program correctness, verification, and testing.
Goals: The goals of this class are to teach the syntax of a high level programming language to students who already know how to program. This course will introduce the foundation of Computer Science with data types, variables, conditionals, loops, functions, and arrays taught in Modern C++. CS162 will introduce new constructs such as classes, pointers, dynamic memory, linear linked lists, recursion, and multi-dimensional arrays to prepare students for CS163, Data Structures. Students will experience developing independent programming projects given a specification using a modern structured computer language. Students will experience data abstraction, separate compilation, and the use of library procedures. Students will also gain experience in the use of Linux tools including vim, search and replace, and git.
Upon the successful completion of this class, students will be able to:
Describe the importance of clearly and precisely specifying the requirements of a problem. Demonstrate proficiency at writing algorithms given a specification. Design solutions and apply Modern C++ to programming problems. Develop a consistent programming style. Demonstrate the ability to debug and test programs. Apply separate compilation, Linux commands, vim navigation, and Git procedures when solving programming problems. Demonstrate proficiency at programming using functions with pass by reference, arrays of characters, arrays of structures, classes, pointers, dynamic memory, and linear linked lists. Describe the use and purpose of functions and recursion. Apply classes and think in terms of objects, experiencing Data Abstraction at an introductory level. Describe the social, ethical, and security implications of the programming projects. Describe how parallel programming impacts software design.
Major Topics: Introduction and overview (2 hours) I/O, Conditionals, Repetition, Arrays (6 hours) Functions and Arguments (4 hours) Introduction to Classes, Constructors, Separate Files (4 hours) Introduction to Pointers and Dynamic Memory (8 hours) Introduction to Linear Linked Lists (4 hours) Recursion (4 hours) File I/O (4 hours) Arrays with Structured Elements (4 hours)