pbd

Programming by Doing


“The best way to learn is to do.” - P.R. Halmos

Frequently-Asked Questions

 

What programming language(s) will I learn?

For now, this material is focused on preparing self-study students to pass the AP CS exam. That exam is in Java, so the material is in Java.

In the future, I may eventually add a Python curriculum.

What sort of computer do I need?

It honestly doesn't matter. Even if your computer is very old or very slow, it should work. Also, your operating system doesn't matter: I have students using Windows, Macs, and Linux.

To write Java programs for this course, you only need three things:

  1. a computer with an Internet connection
  2. a version of the Java Development Kit (JDK) for your computer
  3. a text editor

The JDK is free and is available for Windows and Linux. Apple computers come with the JDK pre-installed.

Later in the course, you may prefer to install an Integrated Development Environment (IDE); these are also free and available for any platform.

Who is grading the assignments?

me working behind a LCD monitor

I am. I'm Graham Mitchell, a computer science teacher at Leander High School.

I've been teaching the basics of programming to beginners since the fall of 1997 (fourteen years). I've taught Pascal, C++, Java, Scheme, Python and ActionScript 3. In addition to the introductory course, I have also taught Advanced Placement (AP) Computer Science A, AP Computer Science AB (now sadly discontinued), data structures (stacks, queues and trees), web design / programming, and video game development. I also tutored a home-schooled student for three years.

What sort of feedback will I be getting on the assignments I turn in?

It depends. If you completed the assignment exactly as I expected, the feedback will be pretty short and to-the-point; probably not much more than a single sentence.

However, if something is wrong, I'll explain what you did and what you should have done instead. If there's a subtle but pernicious error in your mental model, I might write quite a bit (several paragraphs). If you want, you can then re-submit any fixed assignments for further comment. Or, lesson learned, you're free to move on.

Of course, if you put any questions in the body of the code, I'll answer them.

If I work through these assignments, will I be able to pass the Advanced Placement (AP) test in Computer Science?

This course does eventually cover all the material tested on the exam. Most of my students that ace the exam have mastered my course material and also do a dozen practice free-response questions and several practice exams.

Some also purchase a book like Barron's AP Computer Science A.

Every year a couple of my students do well on the exam with no practice other than my material (though I don't recommend this).

And I also have students yearly who have "passed" my class but do poorly on the exam. Usually these students haven't fully mastered this material, and haven't practiced much, either.

I can guarantee this: you can pass the exam using this material. Whether or not you will depends as much on you as on me.

What if I have no interest in the AP Computer Science exam?

This is still excellent foundational material to learn the basics of programming in an object-oriented programming language. And there are virtually no assignments that are there only because a topic is on the exam.

May I email you questions?

It would be better to submit (unfinished) assignments with questions inside. I am much better at answering questions within the context of the assignment you are working on than answering questions in isolation.

In fact, please send me broken code. Seeing the code you thought would work gives me insight into your mental model, which greatly improves the quality of feedback I'm able to give.

That said, I will answer questions by email if it's really the best way.

How quickly will you provide feedback?

I typically "grade" once a day, five days a week. (I usually take Friday evenings, Saturdays, and Sunday mornings off.)

Unless you submit assignments after I've already gotten caught up on grading on Friday afternoons, you'll almost always get feedback within 48 hours and typically within 24 hours.

How am I going to know what to do if there are no lectures?

The first assignment is so easy that almost anyone should be able to complete it. The only prerequisites are:

The second assignment is almost identical to the first, but perhaps with a tiny, trivial change. The third assignment is not much harder than the second.

In this way, the difficulty slowly (slowly!) ramps up. Whenever a totally new concept appears, there will be a couple of assignments where you only have to type in a program that has already been completed.

Most assignments have a completed solution available for viewing, as well, in case the hints aren't enough and you get completely stuck.

Some assignments have hints (or "spoilers") which are hidden at first, but which you may reveal if you need a tip.

Other assignments do have lectures. I have some slides you may download as PDFs for certain topics, and some even have narration.

Finally, if I find that the "cognitive leap" required between two consecutive assignments is too much for several students, I often create a new assignment to bridge the gap.

Why are the assignments so easy?

Usually I get this question from parents that already know how to write computer programs or from students with prior programming experience.

This course is designed for students with no programming experience. What seems easy or obvious to an experienced person rarely seems so to a total beginner.

There is a world of difference between knowing how to program and knowing how to teach beginners to program. You may be an expert in the former, but I can virtually assure that I'm far better at the latter.

Are you available to chat?

Not generally. I can only provide excellent feedback to dozens of students if I can do them all in batch when time permits.

However, you should check out the various plans available.

How long will it take me to work through the material?

This depends very much on your aptitude and on how many hours a week you are able to devote to it.

My fastest, most skilled students are able to cover enough material to comfortably pass the AP exam in as few as 150 hours of focused programming time. If you work two hours a day, five days a week, this would take you 15 weeks.

However, most of my more normally-abled students take 200 to 300 hours to get to the same point.