CS 4593.008 Prog Fund. and Data Structures (non-CS)

Fall  2019

August 26, 2019  - December 13, 2019

http://www.cs.utsa.edu/~korkmaz/teaching/cs4593

Course Description

CS 4593.008 Prog Fund. and Data Structures (non-CS) (3-0) 3 Credit Hours.
In the new catalog (Fall 2020), this course will be listed as
CS 2173. Programming Fundamentals and Data Structures. (3-0) 3 Credit Hours.

Prerequisite: Consent of instructor. This course is a bridge course for the non-CS students. It cannot be applied to the undergraduate degrees in computer science. Topics include programming fundamentals and basic data structures such as arrays, stack, linked-lists, trees, graphs. Only one of CS 2193, CS 2173, and CS 2124 (or previously CS2123/2121) will be counted towards a degree.

Objectives

This bridge course is designed for the non-CS students who are interested in (or accepted to) Computer Science Master program. For more details about this MS program, click here 

In this bridge course, we mainly cover the foundations of programming and data structures from two regular CS courses (CS 1713/1 and CS 2123/1). To be able to cover all the topics and better prepare students for Master in CS, we will provide most of the lecturing in video forms and require students to watch/study a set of video lectures in each week before the class time. In class, we will first give a quiz to check students' understanding of the materials for the week. We then mainly focus on problem solving and actual coding exercises in class. 

Through the video lectures, slides, quizzes and problem solving in class, and weekly programming assignments, students will be able to acieve the following objectives:

  • Learning fundamentals of computer programming using a specific language known as C.
  • Learning algorithm development and practicing problem solving methodology.
  • Learning advance programming concepts  with an emphasis on pointers and dynamic memory management in C.
  • Understanding the implementation details of basic data structures like arrays including multidimensional arrays, and dynamic data structures such as linked lists, binary search trees, graphs,heaps, hashing.

Time and Location

Saturday 11:00am-1:45pm
NPB 1.226

Instructor

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

Office Hours: Sat @2pm-5pm (or by appointment)

TA

TA office hours:
TBD

Tutoring

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

Prerequisite

Consent of instructor.

Textbook

There is no required textbook!

Other reference books/sites (optional)

C programming Language:
  1. Online C tutorials: zentut.com
  2. C Programming: A  Modern Approach by K. N. King
  3. The C Programming Language by Kernighan and Ritchie 
  4. A Book on C by All Kelley and Ira Pohl, 
Data Structures:
  1. Programming Abstractions in C: A second Course in Computer Science by Eric S. Roberts, Addison-Wesley, 1998  (Higly recomended. I used this to prepare many of my slides in this course)
  2. The Algorithm Design Manual by Steven S. Skiena
  3. Data Structures and Algorithm Analysis in C 2/e by Weiss
  4. Data Structures Using C and C++ by Y. Langsam, M. Augenstein & A. Tenenbaum
Linux:
  1. A Practical Guide to Linux by Sobell

Grading

  • 10%   Attendance, class participation and weekly quizzes
  • 25%   One midterm exam (Date: Oct 12, 2019 (tentative) )
  • 30%   Programming Assignments ! NO LATE SUMBISSION !
  • 35%   Final Exam: (in the same classroom) but time is different! Date: Sat, Dec 07, 09:45 am - 12:15 pm
Final letter grade:
A-, A : ≥ 90%
B -, B, B+ : ≥ 80%
C -, C, C+ : ≥ 70%
D : ≥ 60%
F : ‹ 60%

Class Assignments

Recitation Exercises

We will have 12 pogramming assignments/homeworks  (30%)

Each of the first 10 will have a week to complete. Each of the last two will have 10 days to complete.

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 

  • Fundamentals of Computer Programming using C Programming Language
    • C Program Structure
    • Comments
    • Variables
    • Built-in data types
    • Basic Input/Oputput functions
    • Arithmetic/Logical Operations and Expressions
    • Control Flows
      • Selections: if-else, switch;
      • Loops: for, while, do-while
    • Functions (call-by-value)
  • Advanced Programming Concepts in C Language
    • Pointers
    • Arrays (1D and 2D)
    • Pointer Arithmetic and Arrays,
    • Command Line Arguments (2D char array)
    • Structures
    • Dynamic Memory Allocations
    • I/O Libraries (File Input/Outout)
    • Recursion
  • Data Structures
    • Asymptotic Algorithm Analysis, Searching, Sorting
    • Interface-based programming and Abstract Data Tyeps (ADT)
    • Stack,
    • Linked Lists,
    • Queue,
    • Binary Search Trees
    • Graphs
    • Heaps and Priority Queues
    • Hashing
  • Linux/Unix and Our Systems (Mostly covered outide the classroom, you should get help from TAs/tutors)
    • Program Compilation and Execution in Unix/Linux
    • Debuggers and other tools (make, gdb, ddd, valgrind, etc.)

Online materials and Class Notes

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

  • You are required to study a set of videos and the corresponding slides before each class.

Software

C/C++ compiler

We will use Linux and gcc in the CS lab.

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 NetBeans, DDD debugger etc., 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
  • C standard

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.

Disclaimer

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.