Download VOLUME II

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Structured programming wikipedia , lookup

Reactive programming wikipedia , lookup

Algorithm wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Design Patterns wikipedia , lookup

Sorting algorithm wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Object-oriented programming wikipedia , lookup

Corecursion wikipedia , lookup

Transcript
COURSE DESCRIPTION
Department and Course Number CS 2003
Course Coordinator Roger Wainwright
Course Title: Fundamentals of Algorithm and Computer Applications
Total Credits: 3
Current Catalog Description:
Continuation of CS 1043. Further development of a disciplined approach to design, coding, and testing of programs written in
an object oriented language. Various implementations of abstract data types, including lists, stacks, queues and introduction to
trees. Introduction to algorithm analysis sorting and searching. Prerequisite: CS 1043.
Textbook: Data Structures in Java, by Thomas A. Standish, Addision-Wesley, 1998
References:
None
Course Goals/Objectives:
To further develop a disciplined approach to the design, testing and the deveolpment of programs in an object oriented
environment. Further study and develop the notion of various elementary data structures and introduce students to the anaylsis
of algorithms.
Prerequisites by Topic: The fundamentals of programming concepts and languages indicated by topics below:
1. Simple data types
2. Control structures; simple I/O;
3. Coding and testing procedures
4. Introduction to object oriented language concepts
5. Functions, parameters, passing of parameters.
6. Arrays and manipulation of simple objests
Major Topics Covered in the Course
1. Review of Fundamental concepts of object oriented programming
2. Data Abstraction
3. Principles of recursion (tracing recursive programs and developing recursive programs
4. Concepts of linked lists
5. ADT List and its implementation using arrays and linked lists
6. ADT Stack and its implementation using arrays and linked lists
7. ADT Queue and its implementation using circular arrays and linked lists
8. Study of Vectors in java and use of Interface in Java
9. ADT Binary trees and its implementation using arrays and linked lists
10. Tree traversals, inserting and deleting in a BST
11. Almost Complete Trees - Heaps (insertion, deleting root, and sorting)
12. Various sorting ans search ing algorithms with the introduction of Big Oh notation
13. Introduction to Analysis of Algorithms
14. Two hour exams, one Final exam, 13 lab assignments (one per week), 5 programming assignments
Programming Assignments (Outside of Class)
Students were allowed 3 weeks to cmplete each assignment. In most cases the assignments overlapped
Pgm 1: Write a program to implenent various Set Operations using the ListClass in Lab 1
Pgm 2: Implement the Maze program Recursively.
Pgm 3: Implement an Infix to Postfix algorithm using Stacks
Pgm 4: Implement the Radix Sort using Queues
Pgm 5: Write Java code to be able to delete any node from a BST.
Laboratory projects (specify number of weeks on each) 13 Lab assignments (one per week in the lab)
Lab 1: Students implement Lists using an array
Lab 2: Students rewrite a list using pointer variables such that the list is double linked and in sorted order
Lab 3: Students write a recursive program to sum the values in an array
Lab 4: Given two sorted arrays , write a merge routine to merge the results into one sorted list
Lab 5: Implement the Rational class (object) and implement the GCD recursively
Lab6: Use the Stack class to write a java program to evualate a simple postfix string
Lab 7: Use Stack to determine when given two sequences of integers, if one is the reverse of the other
Lab 8: Alter the methods in QueueArray.java to make a priority queue
Lab 9: A lab using Vectors
Lab 10: A Lab using the Interface to change the BST program to implement the Double Type
Lab 11: A programming assignment to review the concepts of BST and traversals
Lab 12/13: Lab involving timing and analysis of various sorting algorithms (Two weeks)
Estimate CSAB Category Content
CORE ADVANCED
Data Structures
Algorithms
Software Design
__1___ ___________
__1___ ___________
_____ ___________
CORE
Computer Organization and Architecture
Concept of Programming Languages
ADVANCED
_____ ___________
__1___
___________
Oral and Written Communications NONE
Every student is required to submit at least ___0__ written reports (not including exams, tests, quizzes, or commented
programs) of typically _____ pages and to make ___0__ oral presentations of typically _____ minutes duration. Include
only material that is graded for grammar, spelling, style, and so forth, as well as for technical content, completeness, and
accuracy.
Social and Ethical Issues NONE
Please list the topics that address the social and ethical implications of computing covered in all course sections. Estimate
the class time spent on each topic. In what ways are the students in this course graded on their understanding of these topics
(e.g., test questions, essays, oral presentations, and so forth)?
Theoretical Content NONE
Please list the types of theoretical material covered, and estimate the time devoted to such coverage.
Problem Analysis
Please describe the analys experiences common to all course sections.
This course first introduces students to the Big Oh notation, and we use this in the analysis of all of the algorithms presented in
the course (second half of the course).
Solution Design
Please describe the design experiences common to all course sections.
Emphasis is on Object-oriented software design. Students are expected to break down a problem and design the software by
identifying appropriate objects and the content (capability) of each object, and the interconnection and cooperation between
objects. Various Lab exercises help students develop these skills.