C Programming
02.03.01, Mathematics and Artificial Intelligence
Attention!
Caution!
You have a lecturer from the Department of Software Engineering, but probably have not yet completed the survey 'Let's get acquainted'? This is a very dangerous situation. Don't wait for (and if) the instructor to say. Fill in!
Materials
Hometasks
0. Git repository & software installation
Fix «Hello World» program
Number guess game
Number guess game: computer should guess!
Cache thrashing benchmark
Course Agenda Draft
C Programming language reasoning and history. Operating enviroment: generic Unix-like (Linux), others (Windows + Cygwin,MSYS2,MSVC). 'Hello World' program.
Built-in data types: char, int, float, double. Control flow: operators, functions, comments, cycles.
Macros. Arrays and strings. Pointers. Character encodings.
Structures and unions. Bit fields.
Module system. Includes. Libraries.
Input and output. Standard library modules.
Utilities: 'make'; IDEs; CI/CD; debuggers; profilers.
Dynamic memory allocation, heap. Memory leaks.
Sorting and searching arrays.
Trees and graphs.
C and Python. CFFI, Python.h.
pkg-config. Cross-compiling C programs.
Software Used
Overall
Visual Studio Code (but any text editor should be ok)
For Linux users
Git and VS Code as system packages
GCC or CLang, recent versions
Make
DGB or LLDB
For Windows users can chose of:
Unix-like subsystems with above (GCC and so on) packages
C++ support for Visual Studio (slightly outdated instructions are here)
For Mac OS users
Install above packages with Homwbrew
References
Ivor Horton. Beginning C. From Novice to Professional. APress: 2006.
Jeri N. Hanly, Elliot B. Koffman. Problem Solving and Program Design in C. Pearson Education: 2007.
Kyle Loudon. Mastering Algorithms with C. O'Really: 1999.
Brian W. Kernighan, Dennis M. Ritchie. The C Programming Language. Prentice Hall: 1988
Cay S. Horstmann. Windows Shell Tutorial
Scott Chacon, Ben Straub. Pro Git Book