CSCI 162

Introduction to Programming II

Coordinator: Gary Zoppetti

Credits: 4.0

Description

Continuation of CSCI 161 covering advanced computer programming techniques. Emphasis on object-oriented programming, specification, design, elementary data structures, and proper use of programming language and development tools. Abstract data types, classes and objects, recursion, linked lists, queues, stacks and binary trees. Current language used is Java.

Prerequisites

C or better in CSCI 161

Sample Textbooks

Course Outcomes

At the end of this course, a successful student will be able to

  1. design, implement, and test programs of several hundred lines;
  2. use typical programming techniques including multidimensional arrays, recursion, pointers, dynamic memory allocation, templates, exception handling, file I/O, stacks, queues, and linked lists;
  3. implement abstract data types; 
  4. use a debugger to find and fix errors in a program; and
  5. describe the concepts of intellectual property, copyrights, patents and trade secrets, as well as their application in computing.

Major Topics Covered

  1. Review
    1. Control Structures
    2. Methods
    3. File IO
    4. Arrays, Matrices
  2. Software Development
    1. ADTs, Inheritance, and Polymorphsm
    2. Software Life Cycle
    3. Big-O Notation
    4. Symbolic Debugging
    5. Test Plans
  3. Container classes
    1. Operations
      1. Membership Testing
      2. Insertion
      3. Deletion
    2. Implementation
    3. Applications
  4. Linked lists
    1. Definition and notation
    2. Operations
    3. Implementation using pointer variables
    4. Heap-based Dynamic Storage Allocation
    5. Applications
  5. Stacks
    1. Definition and notation
    2. Operations
    3. Implementation
    4. Applications
  6. Queues
    1. Definition and notation
    2. Operations
    3. Implementation
    4. Applications
  7. Recursion
    1. Definition
    2. Appropriate use
    3. Indirect recursion
    4. Stack-based dynamic storage allocation
    5. Applications (e.g. Backtracking)
  8. Binary Search Trees
    1. Definition, terminology, and notation
    2. Operations
    3. Implementation
    4. Applications
  9. Intellectual Property
    1. Copyrights
    2. Patents
    3. Trade Secrets
    4. Applications in Computing

Sample Laboratory Projects

  1. Introduction to lab. Use the debugger on a provided program
  2. Use of multidimensional arrays. Write a program to play the mines game.
  3. Build a class that keeps track of currency and does currency conversions.
  4. Write a recursive function to print a number in a given base.
  5. Write a recursive function to solve the 8-queens problem.
  6. Using the provided ADT for a stack, develop a program to evaluate a postfix expression.
  7. Implement a queue ADT using a circular array representation. Build a driver to test it.
  8. Implement a stack ADT using a linked list representation. Build a driver to test it.
  9. Using a search tree ADT, write a procedure that does an in-order traversal of a binary tree. Use this to sort a collection of words.