Disciplinary Commons

Course Objectives

CS 211 Course objectives / outcomes basically reflect the ACM’s CS-2 Curriculum:


Learning Outcomes: Computer Science 211 – Fundamentals of Computer Science - II

At the end of this course, students should be able to:

1.   Define the concepts of abstraction, modularity and encapsulation in program design.

2.   Explain the benefits of modularity and encapsulation for program design, reliability and testing.

3.   Explain the basic principles, define concepts and appropriately use terminology of object-oriented design/programming.

4.   Explain the differences between procedural and object-oriented programming.

5.   Define inheritance and polymorphism, and explain the role they play in program design.

6.   Create and use new classes through inheritance and virtual functions, and design object structure interfaces and inheritance hierarchies.

7.   Explain and compare the concepts of static and dynamic memory allocation.

8.   Explain and apply good memory management practices, to avoid memory allocation errors such as dangling pointers and memory leaks

9.   Create and use pointers and dynamic memory allocation.

10. Explain the principles of recursion, and write a recursive function to sort a list

11. Explain the problems and limitations of recursion, and give examples when the use of recursive functions is appropriate.

12. Explain, implement and use data structures including lists, stacks, queues, trees, and graphs.

13. Explain and use container classes, and create linked lists using the List container.

14. Explain and use the generic algorithms of the Standard Template Library

15. Design, test and debug algorithms.

16. Measure and evaluate program performance through running time and the use of Big-O notation.

17. Use different approaches and algorithms to search for a value or item in a data structure, such as linear and binary search, and hashing.

18. Select best sorting algorithms for the application, and apply algorithms to arrange items in a predetermined order.

19. Plan, develop and link modules to optimize program design and testing.

20. Include design elements that facilitate troubleshooting during program compilation.

21. Use object-oriented techniques to model real-world situations and objects.

22. Design software components that are elegant, interchangeable and reusable.


CS 211 - Fundamentals of Computer Science II

Upon successful completion of this course, students should be able to discuss, define and implement:

 

I.        Abstraction

          A.       Modularity

          B.       Encapsulation

          C.       Module Interface vs. Implementation

                     1.       Pre / post conditions

          D.       Abstract Data types

          E.       Object-Oriented Design/Object-Oriented Programming

                     1.       Inheritance

                     2.       Polymorphism

                     3.       Dynamic binding

 

II.       Dynamic Memory & Pointers

          A.       Static vs. Dynamic allocation

          B.       Management -

                     1.       allocation

                     2.       deallocation

                     3.       dangling pointers

                     4.       memory leaks

 

III.      Recursion

          A.       Theory

          B.       Implementation vs. Iteration

          C.       Limitations

 

IV.      Data structures

          A.       Lists

          B.       Stacks / Queues

          C.       Linked lists

          D.       Trees

                     1.       Traversals

                     2.       Comparisons

          E.       Graphs

                     1.       traversals

                     2.       paths

          F.       Other data structures

 

V.       Algorithm Analysis

          A.       running time

          B.       Big O notation

 

VI.      Searching

          A.       Linear

          B.       Binary

          C.       hashing

 

VII.     Sorting

          A.       comparison of sorting algorithms

                     1.       Quadratic sorting (e.g. bubble, selection, insertion)

                     2.       Logarithmic sorting (e.g. quicksort, mergesort)

                     3.       Other (e.g. radix)

 

VIII.    Multi-file programs

          A.       modules

          B.       linking concerns

          C.       Compiler pragmatics

Objectives Annotation

Title Page