CS171 Sylabus & Progress


CS171 Syllabus

  1. Resources:


  2. Introduction



  3. Review of Java from CS170



    Assign project 1 (review Java): click here





  4. Advanced Java feature: Inheritance and Polymorphism

    • Object Oriented Programming: (review of CS170 material)


      End review and begin of CS171 material

    • Inheritance and Polymorphism



    Assign project 2 (Inheritance & Polymorphism): click here





  5. Advanced Java feature: Interface and Abstract Data Types





  6. Advanced Java feature: Abstract classes





  7. Advanced Java feature: Exceptions





  8. Analysis of (Computer) Algorithms

    • Intro to Performance Analysis of Computer Algorithms: click here
    • Different "classes" of Computer Algorithms: click here

    • Techniques to analysis running time of algorithms (and the direct approach): click here
    • The recurrence relation techique (setting up recurrence relations): click here

    • Helpful expressions for analyzing running time of algorithms: click here
    • Solving recurrence relations: click here
    • Applying what we have learned to perform loop analysis: click here


    • Here are some more loops for you to analyze:   click here
      • Java program to verify your answers using N = 1, 2, 4, 8, 16, 32, etc:     click here
      • Java program to verify your answers using N = 1, 10, 100, 1000, 10000, etc:     click here

    Hand out homework on loop analysis: click here





  9. Sorting Algorithms

    • Sorting Algorithms: click here

    • Simple Sorting Algorithms:

    • Advanced Sorting Algorithms:
      • Top-down Merge Sort:

      • Bottom-up Merge Sort:
        • A simplified bottom-up merge sort algorithm: click here
        • The "text-book version" of the bottom-up merge sort algorithm: click here

      • Quick Sort:

      • Heap sort will be discussed later





  10. Linked lists:

    • Introduction (how to make links): click here
    • Understand what to do rather than memorize: click here
    • General techniques to insert and delete node from a list: click here

    • Insert and delete nodes at head of a list:



    • Advanced Java topic: Nested classes and inner classes



    • Implementing the Stack ADT using a list: click here


    • Insert and delete list element at tail of list:


    • The Queue ADT


    • Insert and delete list element in an ordered list:


    • The MAP ADT (dictionary)


    • Doubly linked and circular lists: click here





  11. Advanced Java feature: parameterized data type

    • Parameterized data type (or "Generic" data type)





  12. Trees, Binary Trees and the Binary Search Tree (BST)





  13. Heap and Heap Sort





  14. Graphs, graph traversal and other simple graph algorithms

    • Intro to Graphs: click here
    • Data Structures used to represent Graphs and their operations: click here

    • Graph traversal algorithms:


    • Weighted graphs: click here

    • Minimum Spanning Tree (Prim's Algorithm):
      • Minimum Spanning Tree (MST): click here
      • Prim's Algorithm for finding a minimum cost spanning tree: click here

    • Shortest Path (Dijkstra's Algorithm):
      • Path length and Shortest paths: click here
      • Dijkstra's Algorithm: finding shortest paths from a (source) node to all other nodes: click here


    • Tomaz lecture slides 1 (MST): click here
    • Tomaz lecture slides 2 (MST): click here





  15. Recursion





  16. Beyond recursion: Backtracking