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):
for makefile:
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 |