This repository hosts the course "C as a second language", given each year at Telecom Nancy (http://www.telecomnancy.eu/) between 2008 and 2014. I partially use this content at ENS Rennes since 2015.
There is many courses in C for absolute beginners out there, but this one targets advanced beginners that have been exposed to what programming means in another language such as Java, Scala and/or Python, and want to learn about the mother of all languages, C.
We teach C to semi-beginners to ensure that they become better Java programmers by betterly understanding the underlying system. The focus is not on the very basics of programming nor on algorithmics, but on the C programming model, that is a good abstraction of most modern programmable devices.
This course is also a very good introduction to the topic of operating systems. The rudimentary concepts of OS are presented and worked with (processes, I/O, inter-process communication). They should however be reinforced in futher courses afterwards.
The lectures are in English while the practical are in French. I plan to translate everything to English at some point, but didn't find the time so far.