CS 2123 .003 and .004 -  Data Structures

Fall 2018

Aug 21, 2018  - Dec 14, 2018


Course Description

CS 2123 Data Structures 
(3-0) 3 hours credit. Prerequisites: CS 1711 and CS 1713. Concurrent enrollment in CS 2121 is required. Abstract data structures (stacks, queues, lists, trees), recursion, sorting, and searching. Implementation of data structures using explicit memory management, and introduction to abstract data type design and encapsulation. (Formerly CS 1723. Credit cannot be earned for both CS 2123 and CS 1723.)

CS 2121 Data Structures Recitation 
(1-0) 1 hour credit. Prerequisites: CS 1711 and CS 1713. Concurrent enrollment in CS 2123 is required. Recitation to accompany CS 2123. (Formerly CS 1721. Credit cannot be earned for both CS 2121 and CS 1721.)

CS 2123/1  is one of the "Gateway Courses" (CS1713/1 and CS 2123/1) for the students pursuing the B.S. degree in Computer Science. In order to promote student success and to help ensure that students are choosing majors that are appropriate for their aptitudes and skills, a UTSA student must successfully complete each of Gateway Courses for his or her major with a grade of “C-” or better in no more than two attempts. If the student does not successfully complete a Gateway course in two attempts, including dropping a course with a grade of “W” or taking an equivalent course at another institution, then the student is required to change to a different major. For more information about Gateways, see http://www.utsa.edu/registrar/students/gateway.html


An implementation level view of data structures in a specific language known as C with an emphasis on pointers and memory management. Dynamic data structures such as dynamic lists, heaps, balanced trees, graphs, etc. are considered.

Time and Location

If you are in CS 2123.004: TR 10:00am -- 11:15am, then the location is NPB 1.226 (check ASAP for last minute changes)

If you are in CS 2123.003: TR 11:30am -- 12:45pm, then the location is BB 3.03.22 (check ASAP for last minute changes)

Recitation/Lab Time and Location

If you are in CS 2123.004: TR 10:00am -- 11:15am, then you must also register one of
CS 2121.010 T 11:30 -- 12:20pm    NPB 1.226
CS 2121.011 R 9:00 -- 9:50am    NPB 1.226

If you are in CS 2123.003: TR 11:30am -- 12:45pm, then you must also register one of
CS 2121.007 T 1:00 -- 1:50pm     NPB 1.226
CS 2121.008 R 1:00 -- 1:50pm     NPB 1.226


Dr. Turgay Korkmaz
Office: NPB 3.330
Email: korkmaz at cs.utsa.edu
Phone: (210) 458-7346 Fax: (210) 458-4437

Office Hours: T 1:00pm-2:30pm and R 2:00pm-3:30pm (or by appointment)


TA office hours:
Rishabh Monga , TA AIDE, will cover recitations and grade Recit01...Recit10
Office hours: R 10am-1pm, in Main CS Lab,
E-mail: rishabh.monga -at- utsa.edu

Ridwan Rashid Noel , TA, will grade hw01, hw03, hw05
Office hours: T 2pm-3pm and R 1-4pm, in Main CS Lab,
E-mail: ridwanrashid.noel at utsa.edu

Saeef Ahmad , Grader, will grade hw02, hw04, hw06

E-mail: saeef.ahmad.bd _at_ gmail.com


Sam has the following hours:
Tuesdays 3pm--6pm
Thursdays 3pm--6pm
Friday 5pm--6pm

Devin has the following hours:
M 11am-12pm
M 2:pm-3pm
W 1pm-3pm
Sat 9am-12pm

They will be in the CS Main lab (NPB 2.118)

You can also get more help from CS tutors: CS Tutoring Schedule


CS 1711 and CS 1713. Concurrent enrollment in CS 2121 is required.

Recommended Textbook (optional, but it will be great if you can find one)

Programming Abstractions in C: A second Course in Computer Science by Eric S. Roberts, Addison-Wesley, 1998


Other reference books

  1. Data Structures Using C and C++ by Y. Langsam, M. Augenstein & A. Tenenbaum
  2. The Algorithm Design Manual by Steven S. Skiena
  3. Data Structures and Algorithm Analysis in C 2/e by Weiss
  1. The C Programming Language by Kernighan and Ritchie (highly recommended)
  2. A Book on C by All Kelley and Ira Pohl, 4th edition, Addison-Wesley, 1998
  3. A Practical Guide to Linux by Sobell


  •    5%   Attendance, Quizzes, Tutoring participation
  • 35%   Two midterm exams: (first one is 15% + second one is 20%)
    •   First Midterm Sept 6, 2018 (Thursday)
    •   Second Midterm Nov 1, 2018 (Thursday)
  • 15%   Class Assignments ! NO LATE SUMBISSION !
  •    5%   Recitation Exercises ! NO LATE SUMBISSION !
  • 40%   Final Exam: (in the same classroom) but days/times may be different!http://www.utsa.edu/registrar/reg_materials/reg_finals_fall.pdf
    • If you are in CS 2123.004 (TR 10:00am -- 11:15am), Final Exam is on  Monday 10-Dec 9:45 AM - 12:15 PM
    • If you are in CS 2123.003 (TR 11:30am -- 12:45pm), Final Exam is on Tuesday 11-Dec 9:45 AM - 12:15 PM
Final letter grade:
A-, A : ≥ 90%
B -, B, B+ : ≥ 80%
C -, C, C+ : ≥ 70%
D : ≥ 60%
F : ‹ 60%

: The lecture (CS 2123) and the recitation (CS 2121) are considered to be two parts of the same course. The lecture and the recitation carry different course numbers as an administrative convenience. You must be enrolled in a recitation section of the course that is associated with the lecture section that you are enrolled in. You will receive the same grade for both the lecture and the recitation.

Note2: No make-up exams/assignments will be given except for the university sanctioned excused absences. If you must miss an exam or an assignment and you have an excused absence (e.g., a religious holy day, an official university function, military service, medical emergency, extenuating circumstances), it is your responsibility to contact me in advance or as soon as possible thereafter and provide reasonable documentation.
Please double check dates at

We will have 6 class assignments/homeworks (Hw01-... Hw06-...)

We will have around 10 recitation exercises (rec01-... rec10-...) and problem solving sessions

Officially they will be posted and submitted through the UTSA Learn (f. Blackboard). For convience they will be posted at that web page, too (see the links under Online Materials below)

!!!! Please carefully check the due dates on BB Learn because NO LATE SUBMISSION WILL BE ACCEPTED !!!

Course Topics 

  • Quick Review of C Programming Language
    • Data types
    • Pointers
    • Arrays
    • Structures
    • Dynamic Allocations
    • I/O Libraries
    • Recursion
  • Data Structures
    • Asymptotic Algorithm Analysis, Searching, Sorting
    • Stack, Queue, Linked Lists
    • Dynamic Lists
    • Trees, Binary, AVL Trees
    • Graphs
    • Heaps and Priority Queues
    • Hashing
  • Linux/Unix and Our Systems (Mostly covered during recitations)
    • Program Compilation and Execution in Unix/Linux
    • Debuggers and other tools (make, gdb, ddd, valgrind, etc.)

Tentative Schedule
 For tentative schedule and topics covered, click here And study them before the class.
....  .....

Online materials and Class Notes

Accessible from utsa.edu computers
or you need to know the user name and password given in class

  • Lecture Slides For tentative schedule and topics covered, click here. To better learn, please review the slides in advance before we cover them in class.
  • Video lectures To cover the review materials faster, I prepared some videos for the first three weeks. You are expected to watch/study the assigned set of videos before every class in the first three weeks. click here for the schedule and carefully check first three weeks!
  • ------------------------------------------------------
  • hands on exercises and quizzes
  • ------------------------------------------------------
  • class assignments (check BB Learn for deadlines and submissions)
  • recitation exercises (check BB Learn for deadlines and submissions)
  • ------------------------------------------------------
  • sample exams: sample exams from previous years
  • c-reference-card (you can have this during exams)
  • ------------------------------------------------------
  • programs from the textbook
  • cslib from the textbook
Some external links


C/C++ compiler

We will use Linux and gcc in the CS lab.

We will also use the C libraries and sample programs provided by the textbook. You can get the book libraries and  programs as ziped files from library and programs from the textbook (see README first) ..

As an editor you can use vi, pico, gedit, xemacs, etc.

  • To learn vi/vim, run vimtutor on linux. Here are some vi cheat sheets obtained from web: s1, s2, s3
Additional Links
  • For using DDD debugger install MobaXterm, https://mobaxterm.mobatek.net/download-home-edition.html. For logging in, goto Session->SSH->enter Remote Host: one of our fox machines, then your username and your password
  • Dev-C++  Install this software for C program development if you use a windows PC
  • Dropbox  Install this software to maintain synchronized folder of programs
  • xemacs  A lot of information about xemacs available on this site
  • putty  ssh and telnet client
  • winscp  ftp client
    • You can use this to move files between your home machine and department elk machines
  • Xming  X windows server
    • You can use this to access elk machines from home

Computer Accounts

You will have an account on the CS network as long as you are enrolled in a CS course at UTSA. This account gives you access to Windows and Linux in various CS laboratories. You may also access your account from off-campus via the Internet using secure shell. A free version of secure shell is available at http://www.cs.utsa.edu/~javalab/lab/SSHSecureShellClient-3.2.0.exe, if you wish to install it on your home machine.

After installing and running SSH: Click Quick Connect, enter the hostname given in the class, enter your account id.
From CS system admin: "If a student is registered for a CS course and needs to login to the CSNET domain or Linux LDAP domain the default username is their myUTSAid (abc123) and their password is their banner number without the @ character. Please have them reset their passwords when they login. If they do not change their password their account may be locked when we run our password audit. "

Course expectations for professional conduct

Students will treat their classroom obligations as they would any serious professional engagement. These obligations include:
  • Preparing thoroughly for each session in accordance with the course calendar and instructor's request.
  • Notifying the instructor in advance if missing a class.
  • Being set up to begin work (logged in and set-up) for each class period at the time the class starts.
  • Staying on task during work sessions.
  • Participating fully and constructively in all course activities and discussions.
  • Adhering to deadlines and timetables established by the instructor.
  • Displaying appropriate courtesy to all involved in the class sessions.
  • Providing constructive feedback to the instructor regarding the class.

Note: Turn off and put away all cell phones, iPods, and other electronic devices. You should only have class materials on your desk. You should only have the course web pages, and the classroom query software up on your screen. The instructor and TAs can observe and will record incidents of inattention, which will seriously impact the Homework/Attendance/Participation portion of your grade. Unauthorized electronic devices in use or on the desktop during class are subject to confiscation.

University policies

For common syllabus information that should be part of every syllabus, see the page http://utsa.edu/syllabus

It includes the links and the mandatory administrative information concerning disability services, the academic dishonesty policy, and other important issues.


This syllabus is provided for informational purposes regarding the anticipated course content and schedule of this course. It is based upon the most recent information available on the date of its issuance and is as accurate and complete as possible. The instructor reserves the right to make any changes deemed necessary and/or appropriate. The instructor will make his or her best efforts to communicate any changes in the syllabus in a timely manner. Students are responsible for being aware of these changes.