Programming in C II, Spring 2018

Jacobs University Bremen, Spring 2018, Kinga Lipskoch and Xu He

Class sessions: Thursdays and Fridays 14:15 – 18:30, Seminar Room in Research V

Course description: This course is the continuation of the first semester course unit and offers a more advanced view of the programming skills learned during the first course unit. It covers advanced topics of C programming such as the work of the preprocessor, operations on the bit level, data structures, file handling (binary input and output), libraries, and debugging techniques. Data structures like dynamically allocated multidimensional arrays, linked lists, stacks, queues, tree structures are used for solving practical problems. The relationship between pointers and arrays, pointers and structures, and pointers and functions are described and illustrated on examples. The students have to apply the learned knowledge by solving programming problems under the supervision of teaching assistants. 

References (optional but recommended, the online lecture slides suffice)

Brian W. Kernighan, Dennis M. Ritchie: The C Programming Language, Prentice Hall PTR, 2nd edition, 1988 

TAs: Alexandru Sasu and Taha Zia

Grading: Assignments 35% + Final Exam 65%

Any programs which have to be written will be evaluated based on the following criteria:

  • correctness including proper handling of error conditions
  • proper use of programming language constructs
  • clarity of the program organization and design
  • readability of the source code and any output produced

TAs will grade your homework according to this grading criteria.

Useful Source (Sourceful Use):

linked_list.c

for makefile:

makefile

header_file.h

implementation.c

main.c

seek_tell.c

ungetc.c

copy.c

Additional Material (Brain teasers)

Decoding Complicated Nasty Hairy Type Declarations

Towards a Thorough Understanding of Pointers and Arrays

Final Exam: 12:30 - 14:30, 14th of March, IRC East Wing

practice sheet

Schedule (course materials will be updated as we go along)

Date Topics Lecture Slides Assignment
2018-02-08 Introduction, Preprocessor, Bit Operation, Bitmasks lecture_12 assignment_1
2018-02-09 Pointers and Arrays, Multidimensional Arrays, Dynamic Memory    assignment_2
2018-02-15 Structures, Linked Lists, Compiling and Linking lecture_34 assignment_3
2018-02-16 Make, Function Pointers   assignment_4
2018-02-22 Stacks and Queues, Modifiers and Other Keywords  lecture_56 assignment_5
2018-02-23 Binary I/O, File Handling   assignment_6