Software Analysis and Design 1, CSCI-135.

Lecture 1. Jan 30, 2015. C++ intro. Variables. Types. Arithmetic operations.
Reading: 1.1 - 1.5.

Lecture 2. Feb 3, 2015. Control flow. Branching. if and switch. Enumeration types.
Reading: 2.1 - 2.2.
Lab 1. Basics of Unix. Small C++ programs.

Lecture 3. Feb 6, 2015. Control flow. while and for loops.
Reading: 2.3.
HW1. Due Saturday, Feb 14, by 11:59pm (Midnight). [Solutions]

Lecture 4. Feb 10, 2015. Functions.
Reading: 3.1, 3.2.
Lab 2. Simple file processing using redirection. [Solutions]

Lecture 5. Feb 13, 2015. More about functions, Scope, Recursion
Reading: 3.2, 3.3.

Lecture 6. Feb 17, 2015. Call by value and call by reference. Overloading function names. Default parameters.
Rational approximation of a floating point number: rational.cpp.
Also, you may read about Rational approximation of Pi.
Reading: 4.1.
Lab 3. Functions. [Solutions]

Lecture 7. Feb 20, 2015. Assertions. Testing.
Reading: 4.2, 4.3.

Lecture 8. Feb 24, 2015. Arrays [Slides].
Reading: 5.1, 5.2.
Lab 4. Call by reference. [Solutions]

Lecture 9. Feb 27, 2015. Arrays (continued) [Slides].
Reading: 5.2, 5.3.

HW2. Due Saturday, Mar 7 Mar 14, by 11:59pm (Midnight). [Solutions]

Lecture 10. Mar 2, 2015. Multidimensional arrays. [Slides] [Programs]
Reading: 5.4.

Midterm 1. Mar 9, 2015.
Lab 5. Arrays. [Solutions]

Lecture 11. Mar 13, 2015. struct data type. [Programs]
Reading: 6.1.

Lecture 12. Mar 17, 2015. Classes. [Programs]
Reading: 6.2.
Lab 6. Processing images. Please read this intro to this lab in advance, before coming to the class. [Solutions]

Lecture 13. Mar 20, 2015. Classes continued. Separate compilation. [Programs]
Reading: 6.2, 11.1.

Lecture 14. Mar 24, 2015. Streams and file I/O. [Programs]
Reading 12.1, 12.2.
Lab 7. Abstract data types. Implementation and testing.. [Solutions]

Lecture 15. Mar 27, 2015. Constructors. [Programs]
Reading: 7.1, 7.2.
After the lecture, I’m going to show some other useful features of SDL, primarily focusing on loading and using textures (graphics files). Talking more about time and user input is another option.

Lecture 16. Mar 31, 2015. More about constructors. Static members. Vectors.
Reading: 7.2. 7.3.
Lab 8. File IO. Reading and processing biological sequences..

HW3. Due Saturday, Apr 4, by 11:59pm (Midnight). [Solutions]

Lecture 17. Apr 14, 2015. Generic data structures. Vectors. Intro to using templates. Hash tables. [Programs]
Reading: 7.3.
Lab 9. Constructors, Vectors, and Boxes.

Lecture 18. Apr 17, 2015. Old-style C strings. [Programs]
Reading: 9.1.

Lecture 19. Apr 21, 2015. New C++ string class.
Reading: 9.3.
Lab 10. One-dimensional and two-dimensional vectors.

Lecture 20. Apr 24, 2015. Review session. [Hash Tables].
Reading: 7.3.

Midterm 2. Apr 28, 2015.
Labs 11 and 12. Implementing a subset of Markdown. [Solutions]

Lecture 21. May 1, 2015. Algorithms competition. [Round One and Round Two]

Lecture 22. May 5, 2015. Introducing pointers.

Lecture 23. May 8, 2015. Assignment. Pointers. Stack and heap allocation. [Slides]
Reading: 10.1.

Lecture 24. May 12, 2015. Dynamic arrays allocation. [Slides]
Lab 13. Separate compilation.

Lecture 25. May 17, 2015. Objects that dynamically allocate memory. [Slides] [Programs]
Reading: 10.3.

HW4. Due Saturday, May 23, by 11:59pm (Midnight).

General information

Tue, Fri, 3:45 pm - 5:00 pm. West W207.
Office hours: after the class or by appointment.

Instructor: Alexey Nikolaev
Website: https://a-nikolaev.github.io/cpp/
Email: a(my last name)@gradcenter.cuny.edu
Office: HN 1000C

How to setup a Unix development environment on your own computer.

Extracurricular

New link: Programming games using SDL 2

Labs

Linux Lab FAQ.

Syllabus, policies, and schedule

Detailed syllabus and schedule

Literature