4 ms·
I taught a few programming courses (C programming) this past year at a local college and I went for basically the same route: Get them to type out small simple
by robertelder 10y ago
I taught a few programming courses (C programming) this past year at a local college and I went for basically the same route: Get them to type out small simple programs in gedit, and compile them on the command line with a simple make file.
Modern programming is often so high-level and tool assisted that it is difficult for a newcomer to understand the difference between what they did and what the computer did. Many of them previously programmed using the arduino programming environment (which I haven't ever used), but I have been told that it does a lot of stuff automatically for them, they don't even write the 'main' method. Many of the students started trying to do all kinds of crazy stuff when trying to make a simple 'hello world' C program, including various Windows headers (on Linux), trying to do GPIO pin stuff etc. I think it can be beneficial to keep the number of new things as small as possible, and build up from there.
- teach 10y agoI couldn't agree more. That's actually my biggest complaint with Java for true beginners; "hello word" has half a dozen concepts you can't omit but also can't even begin to explain. I just get hand-wavy and say "it's a required heading that Java requires; I'll explain it later."
- sotojuan 10y agoI'm assuming you don't have a choice in the language? I'd pick Python or something similar over Java for teaching coding.
- teach 10y agoThe AP exam is in Java, so I could teach the beginners Python and then switch to Java for their second year. Many teachers do. Introductory Java works for me, though.
- sotojuan 10y agoAh, got it. I also took AP Computer Science—good memories!
- xapata 10y agoIt's too bad that the AP exam is so slow to update.
- teach 10y agoIn the US, most universities still teach Java for their first programming course for CS majors. The AP exam has to match that. Once most universities begin with Python, the AP exam will follow suit.
- xapata 10y agoThe majority of "top" computer science departments teach Python in their CS 101 equivalent. http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-us-universities/fulltext http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the...
- sotojuan 10y ago...but the vast majority of programs in the US teach Java or C++.
- xapata 10y agoAbout 20k students take the AP Computer Science exam each year, split 14k for the A-level and 6k for the AB-level. I was going to make some argument that the AP students are all aiming for top schools, but the numbers seem to say otherwise. At least, 14k sounds like a lot.
- teach 10y agoYour data is super old; the AB-level exam was discontinued in 2009, and last year we had nearly 60,000 students that took the A exam. But your point is therefore even more valid: not all of these students are going to be at top schools.
- taneq 10y agoC++ is even worse, especially if using iostreams as many beginner's tutorials do. I mean seriously, your introductory script requires polymorphic operator overloading to abuse a common operator (left shift) into doing something totally unnatural for its usual meaning? What the hell. Any introduction to programming which requires hand-waviness is just teaching newcomers to not ask questions, which is terrible.
- mikegerwitz 10y ago> Modern programming is often so high-level and tool assisted that it is difficult for a newcomer to understand the difference between what they did and what the computer did. I started programming long ago in a land fortunately very far away with Visual Basic---and this statement expresses one of the largest impediments to my understanding of systems. I wholly agree that it's detrimental (and perhaps negligent on an instructor's part) until a time where the student has a firm understanding of the boilerplate.
- parr0t 10y agoI did a unit at university learning C at the beginning of the year and you sound similar to my lecturer. We used VIM, no fancy IDE's and we had to compile our code in the command line using flags such as -ansi -Wall -pedantic and would be marked down even if we had warning for not following the coding conventions. Same goes for allocating any memory we did not free, etc and to illustrate how to use debugging tools such as gdb, valgrind. Was a tough unit that definitely did not hold your hand (I had done a lot of Java before that which handled things like memory allocation for you along with a much more forgiving teacher) but I am grateful I did the unit and really enjoyed the harder-approach my lecturer took.