Talk:An introduction to programming in C: Difference between revisions

From Nottinghack Wiki
Jump to navigation Jump to search
Marcus (talk | contribs)
Why start with the C language? Who shall we aim this course at? Other complementary courses we could run.
 
Marcus (talk | contribs)
 
(3 intermediate revisions by 2 users not shown)
Line 11: Line 11:
* A gentle introduction to programming in Python -- Could be more appealing to a wider audience, as python is better as a teaching language.
* 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.
* 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 [http://qt.nokia.com/products/developer-tools/ 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.
* http://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments#C.2FC.2B.2B <br/> codeblocks is one of the few gpl cross platform with all the boxes ticked, but i've not tried it myself --[[User:Lwk|&#39;RepRap&#39; Matt]] 13:47, 4 May 2012 (EST)
*:
*: Codeblocks looks good and can be used for AVR+Arduino programming projects apparently [http://www.arduinodev.com/codeblocks/].  (Edit: and it's likely we'll want to follow on to embedded programming.) -- [[User:Marcus|Marcus]] 02:43, 11 May 2012 (EST).

Latest revision as of 07:43, 11 May 2012

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.