7 ms·
> first Java programs in Notepad Do you find this to be beneficial? What are your observations? My first impression would be the frustration with lack of sim
by mikegerwitz 10y ago
> first Java programs in Notepad
Do you find this to be beneficial? What are your observations?
My first impression would be the frustration with lack of simple features that programmers take for granted in their editor, like auto-indentation. I can see the benefit in deferring syntax highlighting, but something as simple as the former can be unnecessarily off-putting, and distract from learning.
With that said, I try to think back to when I was learning HTML in elementary school, using Notepad to edit. I was so focused on struggling through comprehension that typing extra tabs/spaces wasn't what slowed me down. I also didn't know what I didn't know about editing. But I have observed frustration in others who didn't know how to program, pounding the tab key or spacebar. And I did forego indentation in my early days in many instances, because it was a PITA.
So this isn't a criticism of your decision to have students use Notepad; I'm just curious of their feedback and your observations. Java indents virtually every line.
- robertelder 10y agoI 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++.
- 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.
- teach 10y agoIt's important to clarify that these are brand-new students who have never coded anything at all in any language. I'm not teaching them Java; I'm teaching them how to code and Java happens to be the language. That said, I only make them use Notepad for a day or two. My goal is that they understand that nothing magical is happening. Java is just text, which can be written with any suitable tool. After the first couple of days we switch to Notepad++, which has syntax highlighting and auto-indent. (We would use Sublime Text, but the district won't approve "shareware".) I do have auto-completion turned off in Notepad++, though. In my experience that only produces beginners that don't actually learn the names of anything. Auto-complete is super helpful once you have a few years of coding under your belt, but IMO it is inappropriate for honest-to-god beginners.
- mikegerwitz 10y ago> I only make them use Notepad for a day or two. My goal is that they understand that nothing magical is happening. This makes sense. > I do have auto-completion turned off I also agree with this. I'm not going to start a debate over the topic, but I believe its benefits are best exploited once they are least needed. With regards to choice of editor: I don't know your district's rationale, but I personally wouldn't want to encourage use of an editor that they would have to purchase to use at home and get the same experience---it's not necessary in our field, and there are many good alternatives. Your choice was a good one. I can't speak for the editor (though I have co-workers that use it for light editing), but it is free/libre software---proprietary editors would send mixed signals, saying that it's great to be curious and learn, to share code with others, to modify your software to suit your needs and help your friends...except when others tell you that you can't. Don't impose limits on their ability to learn and explore. :)
- developer2 10y ago>> these are brand-new students who have never coded anything at all in any language Is this really a thing? I just can't imagine a student going into CS unless they have at least a bit of experience playing with it in their own time. As someone who started programming at age 7-8, I just can't believe people go into CS without a pre-existing interest in the form of a hobby. Do people really enter into CS for the money grab? No interest in programming, no idea what they are getting into, and solely interested in the salary once employed? That seems so counterintuitive based on the reason the majority of us enter the industry. Maybe this is where the 9-5ers come from? I can't say this without ego being involved: you can tell the difference between a "real developer" who spends some time most nights digging into new tech, vs. someone who is in it for the salary who adds nothing but code debt every time they touch the codebase because they never improve their skills outside of office hours. ie: The "senior" after 10+ years whose every commit looks like the work of a first-week developer.
- jcbeard 10y agoAs a middle school student in the early 90's we coded in basic on the Apple II. I loved it. I'm not sure fancy features like auto-indent are really necessary, nor would they detract from learning depending upon the goal. They're productivity enhancers for sure, and I suppose it depends on what you want to teach. If you're teaching algorithms through implementation, sure...might detract from the teaching process. If you're teaching people to go on to jobs right out of high school, then my goal for high school level students is to teach them to go into any environment that their employer might have. I can't tell you how many undergrads (my experience as an instructor while a grad student) I've had complain about an IDE that is unusable because it doesn't have feature X. When students show up with programming experience to college/job, I'd rather have their programming experience be transferrable to whatever editor is available (be it VIM, VI, Nano, MSVS, Xcode, whatever).