Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Structured programming wikipedia , lookup
Reactive programming wikipedia , lookup
Abstraction (computer science) wikipedia , lookup
Design Patterns wikipedia , lookup
Sorting algorithm wikipedia , lookup
C Sharp (programming language) wikipedia , lookup
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.