Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/book/learning-c


https://github.com/book/learning-c

Last synced: about 1 month ago
JSON representation

Awesome Lists containing this project

README

        

# Learning C

Learn C by pairing (mostly remotely) with an experienced C programmer.

Stated long term goal: to become fluent and confident in C, in order to
be interested, willing, and able to hack the perl core.

# Roadmap

A combination of pairing sessions, code reviews, home work, transmission.

## Pairing projects

* [Hello, World!](00-hello/) (0)
* Implement a [hashtable](01-hashtable/) from scratch (1)
* Turn the hashtable into a library (2)
* Implement a double-ended linked list with which you can "push, pop,
shift, and unshift" items.
* Write a library providing the hashtable and double-ended linked list
* Write a custom allocator
* Bind to a C library using XS

## Homework projects (to review)

* Solve the [Advent of code](https://adventofcode.com/) [in C](AoC/)
* A list of [challenging projects](http://web.eecs.utk.edu/~azh/blog/challengingprojects.html)

## Learning tools on the way

* [make](https://www.gnu.org/software/make/manual/make.html)
* [valgrind](http://valgrind.org/docs/manual/manual.html)
* [gcov](https://gcc.gnu.org/onlinedocs/gcc/Gcov.html)

# Resources

## Books

* *[21st Century C](https://learning.oreilly.com/library/view/21st-century-c/9781491904428/)*, Ben Klemens
* *Obfuscated C and Other Mysteries*, Don Libes
* *[Structure and Interpretation of Computer Programs](https://mitpress.mit.edu/sites/default/files/sicp/index.html)*, Harold Abelson and Gerald Jay Sussman
* *[How to Design Programs](https://htdp.org/)*, Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi

## Videos

* [Structure and Interpretation of Computer Programs Video lectures](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/)

## Others

* [Awesome C](https://github.com/kozross/awesome-c): a curated list of C good stuff.
* [Racket](http://www.racket-lang.org/)