Data Structures (SBE201) - Spring 2018

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 Sunday 3rd
2 Sunday 4th

Office Hours

Day Time
Sunday from 10am to 12pm
Monday from 4pm to 6pm

Exception: first two weeks you are very welcome to visit any day from 4pm to 6pm (exclude Monday).

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 Brief intro to git for teams; .gitignore file; Brief intro to build systems
5 Recursion; C++ template structs; C++ classes and objects Briefly: CMake; Git on large scale; How to contribute on this website using pull requests?
6 Open Talk 1: C++ access control on class members; Brief intro to STL; Interesting applications in C++ Markdown vs. WYSIWYG editors; Mercurial
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

  1. Week 1:
  2. Week 2:
  3. Week 3:
  4. Week 4:
  5. Week 5:
  6. Week 6:
  7. Week 7:
  8. Week 8:
  9. Week 9:
  10. Week 10:
  11. Week 11:

Final Projects

Frequently Asked Questions

I have a Unix-based system installed other than Ubuntu 16, should I install Ubuntu 16 instead?

  • If you are using a different distribution (e.g Fedora, Suse, etc.), it is fine as long as it is still receiving support through updates.
  • If you have Ubuntu 17, it is fine but you need to know that version 17 is not long term support (LTS) version. Ubuntu 16 support will last until 2021.
  • If you have an older version (e.g Ubuntu 14.03), make sure that your version is still receiving support from Ubuntu release end of life.