# web viewapply graph algorithms for determining shortest paths (dijkstra's and floyd's algorithms),

Post on 08-Jun-2018

213 views

Embed Size (px)

TRANSCRIPT

COURSE DESCRIPTION

Dept., Number

CS1401

Course

Title

Introduction to Computer Science

Semester

Hours

45hrs

+ labs

Course Coordinator

Vladik Kreinovich

Current Catalog Description

First course for students majoring in Computer Science. Introduction to problem solving with computers, including representation, control structures, and software development methods; closed laboratory and programming assignments in a high-level language; programming environments; social and ethical aspects of computing.

Textbook

D. S. Malik, Java Programming: Program Design Including Data Structures, Boston: Thomson Course Technology, 2006.

References

NA

Course Outcomes

Level 1: Knowledge and Comprehension

Level 1 outcomes are those in which the student has been exposed to the terms and concepts at a basic level and can supply basic definitions. The material has been presented only at a superficial level.

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

1a. Explain the role of algorithms in the problem-solving process.

1b. Define the concepts of data and process abstraction, including the concept of abstract data.

1c. Describe, at a high level, memory hierarchy and storage systems.

1d. Describe, at a high level, data representation in memory, particularly the difference between the representation of primitive types and reference types and representation of non-numeric data.

1e. Describe or identify basic social and ethical implications of computing, including basic intellectual property issues and historical examples of software risks.

1f. Identify major figures in computing and describe, at a high level, their contributions.

1g. Define and explain basic software processes and metrics such as the software life cycle.

1h. Describe the role of software standards and documentation in creating robust and maintainable software.

1i. Document methods in terms of preconditions, post-conditions, and returns.

1j. Describe, at a high level, major programming paradigms.

1k. Understand the use of programming environments (integrated editors, compilers, interpreters, debuggers).

1l. Recognize the types of knowledge and skills required of a computer scientist and the major career options available to computer science graduates.

Level 2: Application and Analysis

Level 2 outcomes are those in which the student can apply the material in familiar situations, e.g., can work a problem of familiar structure with minor changes in the details.

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

2a. Use the syntax and semantics of a higher-level language to express their solutions to programming problems, including the correct use of:

Variables and assignment to variables

Primitive types, e.g., integer, character, and floating-point variable types

Commonly-used built-in reference types, e.g., single-dimension

Selective control structures, e.g., if and switch

Logical and arithmetic operators

Iterative control structures, e.g., for and while

2b. Use functions and parameter passing involving both primitive and reference types.

2c. Apply problem-solving strategies to design a solution to a problem similar to ones seen before.

2d. Design simple ADTs to solve a problem similar to one seen before.

2e. Apply testing and debugging strategies, including black-box and white-box testing, test drivers, stubs, and test suites, to identify software faults.

2f. Describe numeric data representation and number bases, and convert numbers between bases.

2g. Formulate complex logical expressions involving multiple and/or/not combinations.

2h. Implement nested if statements.

2i. Formulate complex arithmetic expressions involving operators of differing precedence and associativity, and understand the order of evaluation of sub-expressions.

2j. Implement simple ADTs incorporating multiple primitive instance variables and at least one reference instance variable, with appropriate accessor and modification methods.

2k. Use dynamic memory allocation, e.g., new, to create new objects.

2l. Use simple I/O to read and write character and numeric data to and from files, keyboard, and display.

2m. Use predefined or built-in exceptions to handle violation of preconditions.

2n. Use standard documentation to determine the use of an unfamiliar class or method.

2o. Use teamwork roles and methods in the classroom.

Level 3: Synthesis and Evaluation

Level 3 outcomes are those in which the student can apply the material in new situations. This is the highest level of mastery.

There are no Level 3 outcomes in this course.

Relationship Between Course Outcomes and Program Outcomes

As shown in Table 5b, the course outcomes for CS 1401 contribute to the following program outcomes:

1-3 Identify and specify requirements for computing systems by selecting appropriate modeling techniques and tools.

1-4 Design, implement, and verify computing systems of varying complexity by using appropriate techniques and tools and by selecting appropriate design patterns, architectures, languages, and testing approaches.

1-5 Evaluate a system with respect to criteria such as performance, complexity, correctness, and usability.

1-6 Determine the impact of an architecture or platform on software design and implementation alternatives.

1-7 Apply problem-solving techniques to solve real-world problems.

3-1 Participate as a productive member of a team.

3-2 Solve common problems in team dynamics.

4-1 Project the potential impacts of technical decisions on the individuals, organizations and external constituencies involved, and identify ethical and legal implications.

4-2 Apply the insights embodied in professional codes of ethics.

5-3 Articulate the benefits of graduate studies.

Prerequisites by Topic

MATH 1508 with a grade of C or better.

Students entering the course are assumed to have no background in computer science or programming. They should be familiar with running software applications and using a computer, and they should be familiar with topics from pre-calculus, including algebraic functions and proofs, and base representations of numbers.

Major Topics Covered in the Course

Basics of programming in a higher-level programming language.

Introduction to Computer Science history.

COURSE DESCRIPTION

Dept., Number

CS2401

Course

Title

Elementary Data Structures and Algorithms

Semester

Hours

45hrs + Labs

Course Coordinator

Olac Fuentes

Current Catalog Description

Second course for students majoring in Computer Science. Fundamental computing algorithms, including searching and sorting; elementary abstract data types including linked lists, stacks, queues and trees; introduction to algorithm analysis.

Textbook

D. S. Malik, Java Programming: Program Design Including Data Structures, Boston: Thomson Course Technology, 2006.

References

NA

Course Outcomes

Level 1: Knowledge and Comprehension

Level 1 outcomes are those in which the student has been exposed to the terms and concepts at a basic level and can supply basic definitions. The material has been presented only at a superficial level.

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

1a. Explain basic or introductory-level notions of a virtual machine.

1b. Describe the concept of polymorphism.

1c. Use class browsers and related tools.

1d. Identify class hierarchies.

1e. Recognize the standard terms associated with particular data structures, e.g., head/tail, push/pop/peek.

Level 2: Application and Analysis

Level 2 outcomes are those in which the student can apply the material in familiar situations, e.g., can work a problem of familiar structure with minor changes in the details.

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

2a. Use Big-O notation to express the best-, average- and worst-case behaviors of an algorithm.

2b. Examine the structure and use of activation records.

2c. Determine best, average and worst-case behaviors of an algorithm.

2d. Code and use quadratic and O(n log n) sorting algorithms.

2e. Implement recursive algorithms over natural numbers, lists, and trees.

2f. Define and use classes, subclasses, and inheritance.

2g. Implement a simple graphical user interface.

2h. Perform string manipulation and simple parsing.

2i. Implement and use multi-dimensional arrays.

2j. Analyze the importance of encapsulation and information hiding.

2k. Implement applications and simulations using the data structures identified above.

2l. Implement simple sequential and binary search algorithms.

2m. Implement quadratic sorting algorithms.

2n. Contrast memory allocation of integers, real numbers, characters, arrays, and objects.

Level 3: Synthesis and Evaluation

Level 3 outcomes are those in which the student can apply the material in new situations. This is the highest level of mastery.

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

3a. Design and implement the following data struct

Recommended