BBM 201 - Data Structures (Fall 2015)

Lectures: Monday 9:00-11:45 @D1-3 (Sec. 1-3), Tuesday 9:00-11:45 @D1 (Sec. 4)


Instructors:

Burcu Can (Sec. 1)

burcucan-at-cs.hacettepe.edu.tr
217
+90 312 297 7500, 121

Lale Özkahya (Sec. 2)

ozkahya-at-cs.hacettepe.edu.tr
203
+90 312 297 7500, 130

Adnan Özsoy (Sec. 3, 4)

aozsoy-at-cs.hacettepe.edu.tr
Z08
+90 312 297 7500

Teaching Assistants:

Yasin Şahin

yasin-at-cs-hacettepe.edu.tr
218
+90 312 297 7500

Gültekin Işık

gultekin-at-cs-hacettepe.edu.tr
Autonomous Systems Lab.
+90 312 297 7500, 162

Cumhur Yiğit Özcan

cumhuryigitozcan-at-cs-hacettepe.edu.tr
122
+90 312 297 7500, 166

Selman Bozkır

selman-at-cs-hacettepe.edu.tr
Multimedia Information Retrieval Lab.
+90 312 297 7500, 155

Schedule (Tentative)

Week Date Topic Exercise Problems
1 Sept 14 Introduction to data structures, Review of Pointers and Arrays Exercise Set 1
2 Sept 21 Holiday
3 Sept 28 Recursion & Performance Analysis Exercise Set 2
4 Oct 5 Multidimensional Arrays Exercise Set 3
5 Oct 12 Matrices, Review of Dynamic Memory Exercise Set 4
6 Oct 19 Stacks and Queues, Review: Realloc
7 Oct 26 Midterm exam #1
8 Nov 2 Evaluation of Expressions
9 Nov 9 Multiple Stacks
10 Nov 16 Array-based linked list
11 Nov 23 Linked lists using dynamic memory, More examples
12 Nov 30 Midterm exam #2
13 Dec 7 Implementation of singly linked lists
14 Dec 14 Doubly linked lists
15 Dec 21 Sparse Matrix implementation using circular linked lists

Grading

2 Midterm exams 50%
Final exam 45%
Class participation    5%

Reference Books

  • Data Structures Notes, Mustafa Ege.
  • Fundamentals of Data Structures in C. Ellis Horowitz, Sartaj Sahni, and Susan Anderson-Freed, 1993.
  • Data Structures A Pseudocode Approach with C. Richard F. Gilberg, Behrouz A. Forouzan
  • Data Structures and Algorithm Analysis in C++. Mark Allen Weiss.
  • Problem Solving and Program Design in C, 7th Edition. Jeri Hanly and Elliot Koffman, Pearson, 2013
  • The C Programming Language, 2nd Edition. Brian Kernighan and Dennis Ritchie, Prentice Hall, 1988
  • Practical C Programming 3rd Edition. Steve Oualline, O'Reilly Media, 1997

Important Dates

Programming Assignment 1    9 October, 2015 (due 26 October)
Programming Assignment 2 23 October 2015 (due 9 November)
Programming Assignment 3 6 November 2015 (due 30 November)
Programming Assignment 4 27 November 2015 (14 December)
Midterm Exam 1 26 October 2015
Midterm Exam 2 30 November 2015
Final Exam To be announced later..

Additional Resources

  • An Interactive Textbook for Data Structures
  • The C Library Reference Guide
  • ISO/IEC 9899 Committee Draft
  • Learning C with GDB
  • C Language Tutorial
  • C FAQ

Sample Exams and Questions

  • Midterm (Fall 2014)
  • Solution
  • Final (Fall 2014)
  • Solution

Tools

Standard Environment

The most efficient way of developing a C program is to use a Unix environment:

  • Command-line
  • Compiler: gcc
  • Debugger: gdb, valgrind
  • Editor: Vim, Emacs, or Sublime Text
To mimic a Unix programming environment on your own computer, you have the following options:
  • On a Linux distribution: sudo apt-get install build-essential or equivalent.
  • On Mac OS 10.6.6 or later: Install Xcode from the App Store, open it, go to Preferences > Downloads > Components and download "Command Line Tools".
  • On Windows: Install cygwin. Please check the packages gcc-core, gcc-g++, gdb.

IDEs

Your programs need to work in the standard environment as we evaluate them on dev.cs.hacettepe.edu.tr. However, if you'd like to use a GUI, these are the IDEs that seem to work well:

  • Code::Blocks (Linux, Mac OS X, Windows)
  • Eclipse (Linux, Mac OS X, Windows)
  • Xcode (Mac OS X)
  • Visual Studio (Windows)

General purpose text editors

  • Vim (Linux, OS X, Windows)
  • Emacs (Linux, OS X, Windows)
  • Sublime Text (Linux, OS X, Windows)

Communication:

The course webpage will be updated regularly throughout the semester with lecture notes, programming and reading assignments and important deadlines. All other course related communications will be carried out through Piazza. Please enroll it by following the link https://piazza.com/hacettepe.edu.tr/fall2015/bbm201

For the BBM 203 related communications, you should also enroll that course in Piazza through the link https://piazza.com/hacettepe.edu.tr/fall2015/bbm203

Policies:

Attendance to lectures is mandatory. Those who do not attend 30 percent of the classes will fail BBM201 directly with F1 grade. You are responsible for all material presented in lecture. Some of the course material is not covered in the textbook. All work on assignments must be done individually unless stated otherwise. You are encouraged to discuss with your classmates about the given assignments, but these discussions should be carried out in an abstract way. That is, discussions related to a particular solution to a specific problem (either in actual code or in the pseudocode) will not be tolerated.

In short, turning in someone else’s work, in whole or in part, as your own will be considered as a violation of academic integrity. Please note that the former condition also holds for the material found on the web as everything on the web has been written by someone else. Those who do not deliver at least 50 percent of the assignments will fail BBM203 directly with F1 grade. F1 disqualifies a student for make up exam/assignment.


© 2015 Hacettepe University