Talk:An introduction to programming in C

From Nottinghack Wiki
Jump to navigation Jump to search

The choice of programming language

C is not an ideal language for beginners, but many hackspace members are interested in C programming for Arduino and other low-level stuff. This course could be very useful to members if it ties in with the Arduino workshops at the hackspace.

Intended target for this course

  • People who have limited time for self-study and want subjects laid out in a structured way so they can learn faster.
  • People willing to teach programming, with the idea that "the best way to learn is to teach" (Oppenheimer).

This course will be most useful to people who have some aptitude/intuition for programming and want to quickly develop their skills. Maybe it's best to start with a weekend of taster-sessions that offers the chance to try some programming exercises, so people can decide whether to continue with the full course, or not.

Suggested complementary courses

  • A gentle introduction to programming in Python -- Could be more appealing to a wider audience, as python is better as a teaching language.
  • A course based on SICP (or similar) that would give us a strong foundation in programming as a discipline, with more concepts and less emphasis on practical projects.

Appropriate software for the course

When running courses like this before, I've found that practical exercises with the group can be frustrating if the presentation PC and the student's PCs have a different software setup. Surprisingly, some people struggle to find menu options & buttons if their computers are configured differently to others. Navigating menus doesn't come naturally to everyone, so this can waste quite a bit of time in every session and we really want to concentrate on the programming. So I think it's important to have a consistent toolchain or simple IDE to base this course around. These are the suggestions so far:

  • Jay (P) has suggested QT Creator. This looks like a good choice, because it has all the features we'll need and is not very customisable, so it will be consistent for all students. However, it is designed mainly for C++ so we'll have to check if it's appropriate for ANSI C projects.