Fundamentals of Programming 2

by Arkadiusz Chrobot published 2019/02/25 22:44:00 GMT+2, last modified 2020-06-01T14:37:19+02:00
Learning materials for the Fundamentals of Programming 2 course.

Be warned, that published here lecture notes were not reviewed and despite my best efforts may contain errors!

Lectures

Grading Rules

  1. Pointers and Dynamically Allocated Variables --- handout
  2. Stack and Its Applications --- handout
  3. Recursion, Divide-And-Conquer   --- handout
  4. Queues and Their Applications --- handout
  5. Singly Linked Linear List --- handout
  6. Singly Linked Linear List and Recursion --- handout
  7. Doubly Linked Linear List --- handout
  8. Circular Doubly Linked List --- handout
  9. Binary Search Trees (BST), Part 1 --- handout
  10. Binary Search Trees (BST), Part 2 --- handout
  11. The Quicksort and Heapsort Algorithms --- handout
  12. Graphs and Their Representations --- handout
  13. The DFS and BFS Algorithms --- handout
  14. Backtracking Algorithms --- handout

During the break caused by the COVID-2019 epidemic outbreak the learning materials (slides, handouts and source code of example programs) for the next lectures will be publish here on every Monday. Please read them, learn the concepts described in them and in case of questions contact me via e-mail (details in Kontakt/Contact).

Literature and other resources

Primary Literature:

  1. Brian W. Kernighan, Denis M. Ritchie,  "The C Programming Language", Second Edition, Prentice-Hall Inc., Upper Saddle River, 2012
  2. Stephen Prata, "C Primer Plus", 6th Edition, Addison-Wesley, Upper Saddle River, 2015
  3. Zed A. Shaw, "Learn C the Hard Way: Practical Exercises on the Computational Subjects You Keep Avoiding (Like C)", Addison-Wesley, Upper Saddle River, 2016
  4. Jon Bentley, "Programming Pearls" Addison-Wesley, Inc., Upper Saddle River, 2000
  5. Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman, "Data Structures and Algorithms", Addison-Wesley Inc., Upper Saddle River, 1987

Additional Literature:

  1. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, "Introduction to Algorithms", 3rd edition, MIT Press, Cambridge US, 2009
  2. Donald E. Knuth, "The Art of Programming", Vol. 1 -3, Addison-Wesley Inc., Reading, Massachusetts, 1998
  3. Steven S. Skiena, "The Algorithm Design Manual", Springer-Verlag, Londyn, 2008

Source Code:

  1. The source code of the programs from the first lecture (pointers and dynamically allocated variables)
  2. The source code of the programs from the second lecture (stack and its applications)
  3. The source code of the programs from the third lecture (recursion, divide-and-conquer)
  4. The source code of the programs from the fourth lecture (queues and their applications)
  5. The source code of the program form the fifth lecture (singly linked linear list)
  6. The source code of the program from the sixth lecture (singly linked linear list and recursion)
  7. The source code of the program from the seventh lecture (doubly linked linear list)
  8. The source code of the program from the eighth lecture (circular doubly linked list)
  9. The source code of the program from the ninth lecture (binary search trees)
  10. The source code of the program from the tenth lecture (binary search trees)
  11. The source code of the programs from the eleventh lecture (the quicksort and heapsort algorithms)
  12. The source code of the program from the twelfth lecture (graphs and their representations)
  13. The source code of the programs from the thirteenth lecture (the DFS and BFS algorithms)
  14. The source code of the program from the fourteenth lecture (backtracking algorithms)

Internet Resources

The C Language Related:
  1. Wikibooks: C Programming
  2. The GNU C programming tutorial
  3. Learning GNU C
  4. The GNU C Library
Programming Related in General:
  1. Programmers Heaven
  2. MIT OpenCourseWare
  3. Udacity
  4. Coursea