CS 162 Introduction to Computer Science II

Credit Hours: 4
Course Coordinator: Karla Fant
Course Description: Introduction to software design, use of a variety of data structures, data abstraction, and recursion. Application of recursion in software design. Program correctness, verification, and testing. Students will write a substantial computer program during the term. Prerequisite: CS 161.
Prerequisites: CS 161, Introduction to Computer Science I.
Goals: To introduce students to methods used to solve significantly large problems and to implement their solutions as professional computer programs. To learn and use advanced concepts provided by C++, such as data abstraction, separate compilation and the use of library procedures. To produce a meaningful, complete software package for an end user along with corresponding external documentation.

To introduce students to methods used to solve significantly large problems and to implement their solutions as professional computer programs. To learn and use advanced concepts provided by a modern structured computer language, such as data abstraction, separate compilation and the use of library procedures. To produce a meaningful, complete software package for an end user along with corresponding external documentation. Students will study a collection of ethical case studies involving computers and investigate how these apply to databases of private information. Students will analyze the security of their projects as part of the external design documentation.

Upon the successful completion of this course students will be able to:

  1. Apply syntax learned in CS161 and CS162 to a large programming problem.
  2. Become proficient at writing algorithms and experiment with other forms of design, such as using structure charts or data flow diagrams.
  3. Program using functions with pass by reference, arrays of structures, classes, pointers, dynamic memory, and linear linked lists.
  4. Design solutions to large and complex programming problems.
  5. Debug large programs.
  6. Write technical manuals, such as users manuals and external design documents. Understand the purpose of each.
  7. Describe the use and purpose of functions and recursion.
  8. Describe the importance of desk checking due to logic errors.
  9. Describe the importance of clearly and precisely specifying the requirements of a problem.
  10. Develop a consistent programming style.
  11. Understand data abstraction, separate compilation and the use of library procedures.
  12. Produce meaningful complete software package for an end user.
  13. Describe ethical cases involving computers and apply these to databases of private information.
  14. Be prepared to analyze the security of their projects.
Textbooks: D.S. Malik, C++ Programming: From Problem Analysis To Program Design, Course Technology.
Russell Shackelford, An Introduction to Computing & Algorithms, Addison-Wesley.
References: Optional: Weekly Lecture Notes and Course Slides.
Major Topics: Program specifications and design (4 hours)
Data abstraction (4 hours)
Text files, structures, strings (6 hours)
Program correctness, verification, testing, social & ethical (4 hours)
Application of data abstraction in software design (2 hours)
Pointers, linked lists, stacks, and queues (6 hours)
Recursion, iteration (6 hours)
Application of recursion in software design (4 hours)
Modular program design (4 hours)
Laboratory Exercises: A project of significant size will be assigned, to be graded in four separate submissions. Project requirements will be developed in class discussion, as will the overall project structure. The project will involve creating, searching, modifying, and sorting a database of information using files, arrays, classes, structures, dynamic memory and linear linked lists. External documentation will be required and is graded as a separate document; this includes a User's Manual and External Design Document with structure charts and data flow diagrams.

CAC Category Credits Core Advanced
Data Structures 1.0
Algorithms 1.0
Software Design 1.0
Computer Architecture
Programming Languages 1.0

Oral and Written Communications: Every student is required to submit at least four written algorithms with each stage of the programming assignment which are typically between one and two pages in length. External document is required by every student and includes a written User's Manual and External Design Document, each of which must be between 4-7 pages in length. This material is graded for grammar, spelling, style, technical content, appeal, completeness, and accuracy.
Social and Ethical Issues: Students will study a collection of ethical case studies involving computers and investigate how these apply to databases of private information. Students will analyze the security of their projects as part of the external design documentation.
Theoretical Content: Students are introduced to the concepts of large program design, testing, and debugging. Emphasis is placed on the notion of programming paradigms: moving from procedural, modular, to data abstraction. Dynamic memory management is introduced along with recursive function design and implementation.
Problem Analysis: See Solution Design Statement.
Solution Design: Students in CS162 becoming familiar with the design of a large programming project, where each stage of the project must perform in order to allow the student to move on to the next stage. Students are required to analyze specifications to determine their completeness and work through the details to finalize the specification for a large programming project through written correspondence. Analysis and design issues focus on how to make programs complete, bullet proof, and user friendly while incorporating concepts such as files, classes, linked lists, searching, and sorting methods. The development of a complete specification and algorithmic design are emphasized throughout the term.