C++ Programming: From Problem Analysis to Program Design
Malik
ISBN 1423902092

CSE121: Introduction to Programming (C++)
Dr. Max I. Fomitchev
Assistant Professor of Computer Science & Engineering
111J IST, Pennsylvania State University, University Park, PA 16803
Email: fomitchev@psu.edu · Phone: (814) 235-9785

Syllabus
doc · Blue Book Description
Philosophy
Master skills by doing; improve by listening; share the knowledge; learn from each other. The class is taught in lecture / lab format: as soon as a concept is introduced and explained the students are expected to put the knowledge to use by writing their own code. Microsoft Visual C++ 2005 integrated development environment is used for writing programs in C++.

To make learning C++ fun the class is subdivided into several teams that towards the second half of the semester start working on their version of the popular Tetris game. There is no end to creativity or possibilities! Team members supervised by team leader work on the project together and learn C++ programming in the process. Cooperation and collaboration between team members and even individual teams is strongly encouraged on all assignments. Sharing knowledge and helping each other are essential elements of this class.

To encourage participation and studying students are awarded (or deducted) extra points for correctly (or incorrectly) answering for-credit questions during oral in-class quizzes.

Prerequisites
2 entrance units in math
Student Projects
Here are some examples of student Tetris projects (with screenshots!):
Tools - Console Library
Jeremy Bridon (CSE major) was very kind to have developed and provided us with the Console Library, which enables developing interactive pseudo-graphic applications using console mode operation.

Click Here to download the Console Library.

Class Topics
  • Visual Studio 2005 Introduction: editing, formatting, creating projects, project settings, file locations
  • Introduction into Computing & Programming Concepts
  • Problem Solving: Analysis & Synthesis, Encapsulation & Abstraction
  • Workflow: Analyze, Synthesize, Design, Develop, Debug, Test, Deploy, Support
  • Software Engineering & Software Lifecycle
  • Modern Software Development Paradigms: Procedural, OOP, Attributed
  • Introduction into Visual Studio 2005
  • Programming Language Basics: Keywords, Operators, Variables, Literals, Constants
  • Data Types and Data Type Conversion
  • C++: Preprocessor, Compiler, Linker
  • Program Organization
  • Coding Standard, Comments & Documentation
  • Control Structures: if, switch
  • Loops: for, while, break & continue
  • User-Defined and Built-In Functions
  • Console & File I/O
  • Arrays, Sorting & Searching
  • Pointers & References
  • Dynamic & Static Memory Allocation
  • C and C++ Strings
  • User-Defined Types, Type Definitions & Unions
  • Classes
Lecture Notes (PowerPoint)
  1. Course Philosophy
Grading Policy
Attendance 10%
Lab Work 20%
3 Tests 7% each
Quizzes 20%
Team Project 29%
Team Leader Bonus 3-5%
Extra points +0.5% / -1%
Letter Grades
A 98-100%
A- 95-97%
B+ 90-94%
B 85-89%
B- 80-84%
C+ 76-79%
C 70-75%
D 60-69%
F 0-59%