Syllabus EHB208E Autumn 2024 - Rev2

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

Syllabus

Course Meeting Times


Every Thursday: 8:30-11:30

Course Description
The course involves the study of basic data structures (e.g., stack, queue, linked list, tree, binary search
tree) and associated algorithms.

Exams and Grading


One homework (5%), Grade of the highest two of three quizzes (10%), two midterm exam (each 20%), and
one final exam (45%). Quiz dates will not be announced in advance. Midterm exams may not be held
jointly, but the final exam will be a joint exam.
VF condition: Before the final exam, Midterm1+Midterm2 >= 50 (not weighted average).
Average grade (including the final) must be >=30 to pass course (end term FF limit).
Midterm Exam1: November 14, 2024. Midterm Exam2: December 26, 2024.
Textbooks
1. "Data Structures Using C" by Reema Thareja
This book offers a clear and concise explanation of data structures, with a focus on C programming. It
covers a wide range of topics from basic arrays and pointers to more advanced structures like trees,
graphs, and sorting algorithms. The book also includes examples and exercises for students to practice
their skills.
2. "Data Structures and Algorithm Analysis in C" by Mark Allen Weiss
This textbook provides an in-depth analysis of algorithms along with a comprehensive introduction to
data structures. It places a strong emphasis on algorithm efficiency and covers essential topics such as
linked lists, stacks, queues, trees, and graphs. The book is particularly well-suited for students who
want to gain a deep understanding of how data structures work in practice.
3. "C Programming: A Modern Approach" by K. N. King
While primarily a C programming book, it offers excellent coverage of data structures within the C
language. It’s particularly useful for students who need a solid foundation in C before diving deeper into
specific data structures. The explanations are thorough, with many examples and exercises to reinforce
learning.
4. "Fundamentals of Data Structures in C" by Ellis Horowitz, Sartaj Sahni, and Susan Anderson-
Freed
This classic textbook focuses on the implementation of data structures in C. It introduces a wide variety
of data structures and emphasizes their algorithmic complexity. The book also covers algorithm
analysis in depth, making it an excellent resource for students who need to balance both theory and
practical coding.

Course web address


http://www.ninova.itu.edu.tr

Topics
Week 1: Introduction to Data Structures and Algorithm Analysis
 Theoretical Lecture 1: Overview of Data Structures, importance in C programming, and basic terminology.
 Theoretical Lecture 2: Introduction to Algorithm Analysis – time complexity, space complexity, and Big O notation.
 Practical Lecture: Analyzing the time complexity of simple algorithms (e.g., linear search, sum of elements).

Week 2: Arrays and Pointers


 Theoretical Lecture 1: Arrays – basic operations, memory allocation, and applications.
 Theoretical Lecture 2: Pointers – pointer operations, pointer arithmetic, and pointers with arrays.
 Practical Lecture: Implementing arrays and pointer-based array manipulation in C.

Week 3: Linked Lists


 Theoretical Lecture 1: Singly linked lists – structure, operations (insertion, deletion, traversal).
 Theoretical Lecture 2: Linked lists vs. arrays – trade-offs and real-world applications.
 Practical Lecture: Implementing singly linked list operations in C.

Week 4: Advanced Linked Lists


 Theoretical Lecture 1: Doubly linked lists – structure, operations (insertion, deletion, traversal).
 Theoretical Lecture 2: Circular linked lists – advantages, structure, and applications.
 Practical Lecture: Implementing doubly and circular linked lists in C.

Week 5: Stacks
 Theoretical Lecture 1: Introduction to stacks – LIFO principle, operations using arrays and linked lists.
 Theoretical Lecture 2: Applications of stacks – expression evaluation, parentheses matching.
 Practical Lecture: Implementing stack operations in C.

Week 6: Queues
 Theoretical Lecture 1: Introduction to queues – FIFO principle, queue operations using arrays and linked lists.
 Theoretical Lecture 2: Circular queues and priority queues.
 Practical Lecture: Implementing queue operations in C.

Week 7: No Classes – Midterm 1 Exam Week


 Midterm 1 Exam: Covers Weeks 1-6 (Algorithm Analysis, Arrays, Pointers, Linked Lists, Stacks, Queues).

Week 8: Recursion
 Theoretical Lecture 1: Introduction to recursion – base case, recursive case, and applications.
 Theoretical Lecture 2: Recursion vs. iteration, recursion in data structures (e.g., factorial, Fibonacci).
 Practical Lecture: Solving problems using recursion in C.

Week 9: Trees – Part 1


 Theoretical Lecture 1: Introduction to trees, binary trees, and binary search trees (BST).
 Theoretical Lecture 2: Binary tree traversal techniques – inorder, preorder, postorder.
 Practical Lecture: Implementing binary search tree creation and traversal in C.

Week 10: Trees – Part 2


 Theoretical Lecture 1: Binary tree operations – insertion, deletion, and searching.
 Theoretical Lecture 2: Applications of trees – AVL trees, balanced trees.
 Practical Lecture: Implementing advanced binary tree operations in C.

Week 11: Graphs – Part 1


 Theoretical Lecture 1: Introduction to graphs – definition, types (directed, undirected, weighted, unweighted).
 Theoretical Lecture 2: Graph representations – adjacency matrix and adjacency list.
 Practical Lecture: Implementing graph representations in C.

Week 12: No Classes – Midterm 2 Exam Week


 Midterm 2 Exam: Covers Weeks 3-11 (Linked Lists, Stacks, Queues, Recursion, Trees, Graphs).

Week 13: Graphs – Part 2


 Theoretical Lecture 1: Graph traversal techniques – Depth First Search (DFS) and Breadth First Search (BFS).
 Theoretical Lecture 2: Applications of graphs in networking and shortest path algorithms (Dijkstra’s algorithm).
 Practical Lecture: Implementing graph traversal and Dijkstra’s algorithm in C.

Week 14: Sorting Algorithms and Final Exam Preparation


 Theoretical Lecture 1: Introduction to sorting algorithms – bubble sort, insertion sort, selection sort.
 Theoretical Lecture 2: Advanced sorting algorithms – quicksort, mergesort, and their time complexities.
 Practical Lecture: Implementing sorting algorithms in C and final course review for exam preparation.

Assessment Overview:
 Midterm 1: Week 7 – Covers Weeks 1-6 (Algorithm Analysis, Arrays, Pointers, Linked Lists, Stacks, Queues).
 Midterm 2: Week 12 – Covers Weeks 3-11 (Linked Lists, Stacks, Queues, Recursion, Trees, Graphs).
 Final Exam: After Week 14 – Comprehensive exam covering the entire course.

This syllabus ensures you cover critical data structures (arrays, linked lists, stacks, queues, trees, graphs) along with algorithm
analysis, recursion, and sorting. Graphs are introduced later in the course, followed by comprehensive final exam preparation.

You might also like