Data Structures (SBE201) - Spring 2019
Teaching Staff
Instructor: Prof. Ahmed H. Kandil
Demonstrator: Eng. Asem Alaa
Lecture Hours
Tuesday, 1st slot (+2nd slot each two weeks).
Section Hours
Section | Day | Time Slot |
---|---|---|
1 | Wednesday | 3rd |
2 | Wednesday | 4th |
Office Hours
Day | Time |
---|---|
Tuesday | from 10am to 4pm |
Wednesday | from 4pm to 8pm |
Feel free to request for additional office hours by sending me an email (asem.a.abdelaziz@eng1.cu.edu.eg)
Course Outline
Week | Data Structures & C++ | Ecosystem & Miscellaneous |
---|---|---|
1 | Introduction: Brief intro to DS; C++ Basics | Briefly: Unix, compilation, git, github |
2 | C++ Memory Model, C++ Pointers and References | Your Code Readability |
3 | Static and Dynamic Arrays; Categorize your logic with namespace scopes; |
Processing command line arguments (argc & argv ); Compilation of multiple files; Basic Unix commands; bitbucket |
4 | Stacks (ADT); Queues (ADT); Linked Lists; Array-Based Stack; LL-Based Stack; Array-Based Queue; LL-Based Queue; Functions Overloading; Naming conventions; Const correctness | |
5 | Recursion; C++ template structs; C++ classes and objects | |
6 | Bubble sort; Selection sort; big O notation | |
7 | Bubble sort; Selection sort; Binary Trees | Open source vs. proprietary software |
8 | Divide and conquer: merge sort, quick sort | Briefly: Development on Windows |
9 | Binary search on sorted array; Binary search tree (BST) | Conan.io; External dependencies |
10 | Algorithms complexity: big O notation | Documenting your code |
11 | Project | Documenting your project on the website using Markdown and pull requests |
12 | Open Talk 2: Other programming languages; Data Structures in Bioinformatics and other domains; C++ libraries, IDEs, and blogs you need to know about; STL vs. Qt vs. Boost | clang-tidy; MOOCs: Coursera & Edx |
Tutorials
- Week 1:
- Slides
- Section Notes: [Part 1: C++ Basics] [Part 2: Using Git and Github, brief intro to Linux].
- Assignment
- Week 2:
- Slides
- Section Notes: [Part 1: Memory, pointers, and references].
- Code Styling
- Assignment
- Week 3:
- Week 4:
- Week 5:
- Week 6:
- Week 7:
- Slides
- Section Notes: [Binary Search Trees, Sets (ADT) and Maps (ADT)]
- Individual assignment
- Week 8:
- Slides.
- Section Notes: [Heaps, Priority Queues (ADT), and Shortest Path Problem] [Introduction to CMake]
- Week 9:
- Section Notes: [Hash tables]
- Slides.
- Week 10:
STL Tutorials
In parallel to the core course, an introductory course to the standard template library (STL) to establish familiarity with its various data structures implementations. The notes series are listed in Introduction to the C++ Standard Template Library (STL).
Report Errata
Help improving the content by reporting and fixing the typos and syntax errors.