Reaction for: Harvey Mudd College by Danah
Basic Course Info
Taught in Java using UNIX. No lectures, only recitations and labs.
First few lecturs are about history of programming, computers and
Java.
Nice things outside of assignment
Their webpage has "lessons" that have code inside them. All of the
code is runnable from the website and is just basic info to test
everything (loops, conditionals, baic syntax). One of the nicest
thing about this is that it would show off what people could do early
on (like how to use System.out.println!). This would be outright
amazing for students.
Not-so nice things
Nothing is graphical. The first three assignments are about printing
things out and getting in input. The rest are still about input/output.
Things to steal
Although I expected to find awe inspiring replacements for programs,
etc., I found something totally different! First, let me explain what
is there. Throughout the website, there are small programs. The
students are asked to do programs that print something out, programs
that add numbers, etc. Although I cannot imagine replacing our
programs with these, a little light went off in my head. Why not use
these simple programs to allow people to get used to different
concepts in syntax and programming (ie: loops).
So here is my stealing idea. Each week, put a new program on the web
for students to do. Each program should take no time at all. In
fact, they should be 10 minute programs for the students. A concept
is explained above the program and they have to do the small program
and turn it in. TAs would test functionality and send the students an
email with their grade (5 points for working, 0 for not). TAs would
grade them as they came in and turned them back with quick feedback.
Effectively, they would be graded on effort/functionality.
The idea behind this would be to allow the students to get a feel for
a non-graphical interaction as well as to teach them SIMPLE syntax.
These mini-programs would end long before Tetris.
With that in mind, here are some suggested programs:
- (Explain println and the difference between an application and an
Applet) Type in "Hello World" (we give it to them)
- (Explain math libraries, readln) Ask the user for two numbers.
Multiply them together and print out the answer.
- If/Else
- For loops, while loops
Basically, use the VERY traditional approach to allow people to write
itsy programs and see how to use things. It may seem as though the
idea is ridiculously simple but I think that it would be helpful for
students to see what is going on in something simple (particularly
ones who had never seen this before).
Now, the only problem would be that we never teach math or integers or
anything like that until very late in the semester. What are the
benefits/downfalls of explaining that earlier on? Would students
catch on to things as easily as I think they would? [Maybe simple
sample code should also be handed out.]
In addition, I suggest that we put tons of small sample code (with
runnables) up for the students to play with. Non-graphical things as
well as graphical.
Problems as I see it
So, teaching input/output has a few problems. For example, System.in
is ugly as are more of the java.io classes. How could we get around
those? The only possibility would be to create wrappers. Even then,
we would need to teach booleans, math, etc. What are the philosophies
behind not teaching that? Would that be problematic (too much
information at once, confusion for students, letting the advanced
students go back to old ways).
A sample thought
Silly Premise
I am soo not that funny. Hire humor TAs.
Concepts Covered
- Text input/output
- Math libraries
- the evil main function
- simple one purpose, one class program
-
Background
The idea behind this program is to show you that not everything is
large and beautiful like most CS15 programs. In some cases, you want
to create miniscule programs (ie: to do small tests). This program
should take you very little time. The idea is just to introduce you
to something different. The regular programs should be much more fun!
Here is some information about math libraries. (Ugg! thoughts...)
Here is some information about the main function (I don't know if I
know much about this except how to use it!) and the difference
between an application and an applet.
Here is an example of input and another of output (how to get around
try/catch blocks without obscene amounts of support code or if
statements? Should this wait until if statements are taught?)
Assignment Specifications
Tell the user a short story. Ask for at least two pieces of
information (in different forms). Use the math libraries to
manipulate at lease one of the inputs and tell the users something
different.
A sample run could be:
>Hello and welcome to my conversion program!
>What is your name?
Danah
>Hello Danah!
>What is the temperature right now (in degrees Fahrenheit)
10
>Danah, it is -12.2 degrees Celcius!
Back to you..
Yes, this simple program looks very much like what CS15 does not
teach. I agree with 15's philosophy but I think that there is also
advantages to such a text philosophy. Teaching it in the summer of
'97 certainly helped me when doing other classes. Programs this
"basic" could be rather beneficial, especially if they are not the
focus of the course. Again, we are dealing with personal opinion.
So, those are my thoughts. Does anyone agree / disagree?
Other People's Reactions
[BACK]