11 ms·
How to use a compiler. Basic shell of a Java program. That statements occur in a sequence. Practice with getting details right. Mathematical expressions. What v
by teach 15y ago
How to use a compiler. Basic shell of a Java program. That statements occur in a sequence. Practice with getting details right. Mathematical expressions. What variables are, and how assignments to expressions differ from formulas (in Excel, say). If statements and conditions. The concept of "incrementing" a variable or accumulators in general. Loops in general.
See for yourself: http://cs.leanderisd.org/current/cs1/assignments.html http://cs.leanderisd.org/current/cs1/assignments.html
- kenjackson 15y agoWow. Not quite 80, but still an order of magnitude more than I would have expected. Interesting they learn Swing before loops. For me, the first thing I learned was printing, then goto, then for-loop. Maybe just a function of language you learn with.
- wyclif 15y agoYep, me too. Of course, that was in BASIC around 1983.
- teach 15y agoYeah, it's 70, not 80. Not sure what I was thinking there, and now it's too late to edit my original comment. Anyway, the "Swing" assignments are there in the sequence for four reasons: 1) To break up the monotony a little bit. 2) To give them more practice copying details accurately. 3) To make them say, "That was kind of cool." 4) To explain why we're not doing "real" programs (a.k.a. GUI) yet. "It takes that much code just to display a blank window on the screen? Guess I can live with the command prompt a while longer."
- flexd 15y agoYour CS curriculum is much better than my schools! I just started my first year of Computer Engineering and the Java course so far is horrible compared to this. I'm a bit disappointed to be honest. I am very glad I already have been coding for years because our teacher and the planned curriculum seems to confuse people even more. I think I will refer some people to your assignments, if that's okay? Hopefully someone can learn more from this :-)
- teach 15y agoI'd be honored for you to point some folks at my assignments, although please only share the link one-on-one: a few of the assignments on there (the ones with an author of "Stacey Armstrong") are part of a curriculum that our district pays to license. Technically I could get in trouble for having his assignments on a public website without permission.
- fjw 15y agoInteresting schedule. My school's AP Comp Sci A class (also teaches Java) is designed for people who are completely new to programming, but we are introduced to loops fairly early. After first being introduced to the different variable types, mathematical expressions, and how to read user input, the students jump directly into boolean, if, switch, and then the for/while/do-while loops.
- teach 15y agoHow many kids take the class? How many do well? I have 75 kids in three sections, and I'd have 100 kids in four sections if they'd open up a fourth section. And all of my students except maybe the bottom 5-10% are moving confidently through the material at their own pace. I'll bet your school either has 1) a lot fewer students 2) a much more hand-picked set of kids, or 3) is leaving a much higher percentage of kids behind, who are either lost or cheating.
- fjw 15y agoWe only have 12 students. I'd estimate that of those 12, about 6 do well in the course. Of the remaining 6, only 1 or 2 are actually struggling with the course. My school is a small (~130 per grade), but renowned international school in Shanghai, China. Your first two guesses are very much spot-on, but I'd have to disagree with the third. Those of us that are ahead help out with the one's who are struggling and in the end, I'd like to think that it all works out well. With that in mind, however, your numbers are indeed more impressive. Because our class size is so small, we're constantly involved in face-to-face interaction with our instructor and with our peers. I doubt our pace would translate into the same success in your school. Is your course designed for the AP exam?
- garbledNonsense 15y agoInitially, I thought this sounded ridiculous. But when I look carefully at what you've done, I'm impressed by your thoroughness. I think you have an excellent course for weak-to-average students. I do wonder if your most able students might appreciate more opportunity to "play" and be creative, but in all honesty, they just need to stick with it into the Project Euler stuff at the end. Is this a whole-year course?
- teach 15y agoFirst, thanks for the kind words. This curriculum has been relentlessly pivoted and iterated based on feedback from over a thousand real students for the past fifteen years. Yes, this is a whole year (36 weeks). The material you're seeing is only the intro material, though. I teach three other courses, including video game development. The faster students are encouraged to skip assignments if they're coding something they already understand, and they get bonus points if they do something creative with an existing assignment. I've tried to optimize for the normal case: the weak-to-average student. The great ones however, don't need much help from me to learn a ton very quickly.
- scdc 15y agoWe learn to read before we learn to write well. Why do we start out writing programs? I've always thought programming classes should start with reading and understanding a program that has some loops, assignments, etc. Maybe a program that draws some shapes or parses/prints some strings. Then have students modify it some. Then afterward, start writing your own stuff from scratch.
- GlennS 15y agoIt's an interesting idea, but I disagree: I think you remember things much easier if you write them out (and have to make them compile/execute) yourself. If I read some code in a language I haven't encountered before, I find I don't absorb any of the little details of syntax. Moreover, I think it makes sense to expose learners to the fun of programming early. And to me that means seeing something that you wrote running.
- seabee 15y agoYour point seems detached from reality. You don't learn any language (native or foreign) just by reading it for months. You are instructed to use it yourself and create sentences, paragraphs, essays, and speeches. You build up your writing skills in tandem with your reading. Perhaps you don't write well until you've read a lot - but nobody expects you to write well as a novice.
- seabee 15y agoYour point seems detached from reality. You don't learn any language (native or foreign) just by reading it for months. You are instructed to use it yourself and create sentences, paragraphs, essays, and speeches. You build up your writing skills in tandem with your reading. Perhaps you don't write well until you've read a lot - but nobody expects you to write well as a novice.
- omaranto 15y agoAccording to my parents, at the public elementary school I went to for first grade in Toronto, Canada they taught writing before (or at least concurrently with) reading. Each kid had a diary in which we would at first draw and eventually write about something that happened each day. Kids would start with just pictures and gradually add more and more text. I don't remember any of this, but I can still read and write English even though we moved back to Mexico the following year, so I guess it worked.
- aboodman 15y agoSelf-taught-programmer here. I've done a lot of pondering about how to teach programming because I tried to learn several times myself, both on my own and in classes. I bounced off each time, until finally sticking. I always wonder what made it different that last time, and if it applies to others. === Have you considered starting with something with less conceptual overhead than java-in-a-shell? There's so much you need to understand before you can even get to writing code that way. You need to learn how to start and navigate a shell on your computer (different on each type, and depends on your system configuration). You need to learn about paths, and java versions, and sdks, and what 'compiling' even means, and the concept of source code vs a binary. This doesn't seem like much to people in the field, but I remember it being really intimidating. In contrast, I really love codecademy.org: http://www.codecademy.com/ http://www.codecademy.com/ You're writing code within seconds. You can access it on any computer and it always works the same way. Which is to say, it works like any other web site. You start seeing things happen right away, and you don't need to understand all the infrastructure initially. === I feel like getting people to that first high where they see their code generate output is really important. If you can get them quickly to feeling a little bit of that power that comes from software, that starts the fire, and they'll have more motivation to figure out terminals and paths and verisons and OSes and everything else.
- teach 15y agoI agree. I don't get to choose whether or not I teach Java; that's determined by the state. However, in my class, we write our first working program on the first day of coding. We install the JDK, do a basic DOS primer, type in our first program (in Notepad), and compile and run it on the command line in a single 90-minute period, like the 3rd day of class. Getting to the "bang" as quickly as possible is HUGELY important.
- sethg 15y agoDo the students move on to using an IDE? I realize that Eclipse or Visual Studio comes with a lot of overhead and you can easily spend a whole semester getting bogged down in all the options, but I would think that an editor with syntax highlighting and parenthesis matching would make a big difference.
- Legion 15y agoHeh. From the way I've heard some parents talk about Leander ISD, I would have figured the kids would have for loops down by 4th grade. :)
- teach 15y agoI wish we could start teaching real programming in middle school at least. I think just variables, if statements and some sort of looping construct ought to be mandatory in education.
- n2dasun 15y agoThanks for posting that. I love how thorough and paced it is. I'm definitely bookmarking that link, as well as /cs2/assignments.html
- teach 15y agoYou're welcome. Happy coding!