# Introductory C Programming Specialization

## Descriptions

- Offered by: Duke
- Prerequisites: None
- Programming Languages: C
- Difficulty: 🌟🌟🌟🌟
- Class Hour: 110 hours

This is an excellent course which I benefited a lot from.

- The course teaches fundamental concepts such as frame, stack memory, heap memory, etc.
- There are great programming assignments to deepen and reinforce your understanding of the hardest part in C, like pointers.
- The course provides excellent practice in GDB, Valgrind, and the assignments will cover some basic Git exercises.
- The course instructor recommends using Emacs for homework, so it's a good opportunity to learn Emacs. If you already know how to use Vim, I suggest you use Evil. This way you don't lose the editing capabilities of Vim, and you get to experience the power of Emacs. Having both Emacs and Vim in your kit will increase your efficiency considerably. Emacs' org-mode, smooth integration of GDB, etc., are convenient for developers.
- It may require payment, but I think it's worth it.
- Although this is an introductory course, it has both breadth and depth.

## Course Resources

- Course Website: <https://www.coursera.org/specializations/c-programming>
- Recordings: refer to the course website
- Textbook: refer to the course website
- Assignments: refer to the course website

## Personal Resources

All the resources and assignments used by in this course are maintained in [Duke Coursera Intro C](https://code.haidongji.com/Duke_Coursera_Intro_C/). Several assignments have not been completed so far for time reasons.
