Skip to content
@CS5008-Khoury

CS5008-Khoury

CS 5008 - Khoury College of Computer Sciences

This organization acts as a central repository for various CS 5008: Data Structures, Algorithms, and Their Applications within Computer Systems sections.

Course Description

This course presents an integrated approach to the study of data structures, algorithms, and their applications within computer systems. We introduce a variety of systems-related topics (models of computation, computer architecture, compilation, system software) and fundamental techniques for solving algorithms (divide-and-conquer, dynamic programming, graph algorithms) as they apply to computer systems. The integration of topics is demonstrated through the implementation of fundamental data structures (lists, queues, trees, maps, graphs) in the C programming language. Additional breadth topics can include programming applications that expose students to primitives of different subsystems such as multi-threading.

Prerequisites

The course is suitable for students in good standing in the ALIGN MS in CS program that have successfully completed CS 5002 and CS 5001.

Course Objectives

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

  1. Explain the basic terminology of computer systems, various models of computation and the role of the operating system as a resource manager.
  2. Demonstrate a working knowledge of using a terminal to navigate the operating system; gather system information; and compile, execute and, debug C programs
  3. Describe each step in the compilation process for the C programming language.
  4. Analyze assembly code and explain its relationship to C code, the fetch/execute cycle, and basic system architecture.
  5. Implement common data structures in the C programming language (e.g., lists, trees, graphs) as well as commonly used algorithms that operate on these structures using dynamically allocated memory.
  6. Compare and contrast different algorithmic approaches to a problem (e.g., searching, sorting, scheduling).
  7. Describe specific algorithmic strategies and how each can be used to solve problems.
  8. Analyze the computation and storage complexity of algorithms by employing the substitution method, the Master theorem, and recursion trees.
  9. Explain proofs related to algorithm correctness and write a simple proof using loop invariants.

Course Topics

  • Basic C Syntax including:
    • Struts, Pointers, Memory Management
  • Memory, Stack and Heap
  • From Code to Executable (compilers, assembly)
  • Foundation for Comparing Algorithms
    • Asymptotic Notation
    • RAM model of computing
    • Psuedo Code Notation
  • Quadriatic Sorting Algorithms
    • Bubble, Selection, Insertion Sorts
  • Divide and Conquer Sorts
    • Merge and Quick Sort
    • Recurence Tree Proofs
    • Subsitution Method
    • Master Theorem
  • Dynamic Programming
  • Sequential Data Structures
    • Vectors, LinkedLists, Stacks, Queues
  • Sorted Structures
    • Priority Queues, Trees, Tree Traversal, BST, Heaps
  • Graphs
    • Adjacency Matrix, Adjacency List, Traversing Graphs with BFS, DFS
  • Greedy Algorithms
    • Scheduling Problem, Dijkstra's Shortest Path
  • Hash Tables
    • hashing data / functions
    • Hash table chaining
  • Proving Correctness
    • Induction Proofs, Loop Invarients

Copyright

Different resources are created by different authors. Public resources may fall under CC BY 4.0, but please check the license for each repo. We also ask that you share with us if you are using these resources for your own class!

Popular repositories Loading

  1. Resources Resources Public

    2 2

  2. ExampleCode ExampleCode Public

    C 31

  3. .github .github Public

  4. Homework-Debugging-C Homework-Debugging-C Public template

    C

  5. Homework-CPractice Homework-CPractice Public template

    C

  6. Labs Labs Public

    C 10

Repositories

Showing 10 of 11 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…