CS 2360 Programming Methods and Intro to Software Engineering (4) 2005

Catalog Description

A systematic approach to the design, construction and management of large computer programs, emphasizing programming style, documentation, debugging techniques and testing. Includes files, structured data types, information hiding, pointers, and linked lists. Prerequisite: CS 1160

Topics:

  • Software Engineering (software life cycle, problem specification, program design, implementation, debugging, testing, verification, maintenance)
  • OOP (design and implementation of an object-oriented program)
  • C++ Language Component (arrays, structs, pointers, classes, recursion, files, good understanding of use of functions, and parameters)
  • System issues: separate compilation, compiler directives, Make

Requirements and suggestions for the course:

Notes:

  • There are two main goals of the course, (i) programming competence in a high-level language, and (ii) good understanding of the algorithm development and implementation process in C++ as an object-oriented language.
  • Students should be required to write well-designed programs of non-trivial length and complexity. They should understand how to design a solution for a problem that requires in-depth thought. Wide experience with algorithm design.
  • Emphasis on logical thinking and use of modular design is necessary.
  • Good writing skills should be required, in logical and readable
  • Laboratory experiences (supervised and independent) in the School of Science Computer Lab as necessary to understand and use the machines and Unix.
  • CS 1160 probably covered most of Dale et al, chapters 1-11. But, topics that may have been missed or that need more emphasis are:
  • designing a program
  • value and reference parameters, const parameters
  • io manipulators
  • less common operators (bitwise, casts, sizeof, ?)
  • floating point numbers, overflow and underflow
  • common libraries (for io, math, strings, assertions, ...)
  • proper testing of programs
  • how to debug a program

Possible weekly syllabus

(1) Review C++ basics through arrays; assign an array or string prog
What makes a good program?
Programs: design, implement, document, test

(2) More on arrays: searching and sorting, strings, string library, typedef, multidimensional arrays

(3) records/structs: possible to omit or cover quickly? C/C++ idioms: multi-file programs, compiler directives

(4-6) classes: ADTs and OOP, information hiding, how to implement OOD possibly skip for now: inheritance, polymorphism, virtual functions

(7-9) pointers: dynamic allocation and deallocation of memory, class destructors, linked lists

(10) recursion

Texts:

Dale, Weems, Headington, Programming & Problem Solving in C++ or other books as appropriate