Introduction to Programming II
Coordinator: Chad Hogg
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.
C or better in CSCI 161
Building Java Programs: A Back to Basics Approach (5th edition) by Stuart Reges and Marty Stepp.
At the end of this course, a successful student will be able to
- design, implement, and test programs of several hundred lines divided among several classes;
- use advanced programming techniques including multidimensional arrays, recursion, generic programming, exception handling, inheritance, and interfaces;
- implement abstract data types such as lists, stacks, queues, and sets using data structures such as arrays, linked lists, and binary trees;
- use a debugger to find and fix errors in a program; and
- describe the concepts of intellectual property, copyrights, patents and trade secrets, as well as their application in computing.
Major Topics Covered
- Control Structures
- File I/O
- Arrays and Matrices
- Class Relationships
- Software Development Fundamentals
- Software Life Cycle
- Complexity Analysis
- Symbolic Debugging
- Test Plans
- Abstract Data Types
- Data Structures
- Partially-filled Arrays
- Linked Lists
- Binary Trees
- Implementation Details
- Generic programming
- Intellectual Property
- Trade Secrets
- Applications in Computing
Sample Laboratory Projects
- Introduction to lab. Use the debugger on a provided program
- Use of multidimensional arrays. Write a program to play the mines game.
- Build a class that keeps track of currency and does currency conversions.
- Write a recursive function to print a number in a given base.
- Write a recursive function to solve the 8-queens problem.
- Using the provided ADT for a stack, develop a program to evaluate a postfix expression.
- Implement a queue ADT using a circular array representation. Build a driver to test it.
- Implement a stack ADT using a linked list representation. Build a driver to test it.
- 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.