Credits, Files, and External Programs
Thanks for your advice on the course planning! Please add in your comments below, if you could. (Save one answer before going on to the next – don't type into all the answers then hit "Add to the page.") If you could, sign your name so I know who the advice is coming from. Thanks! - Mark Guzdial
How many credits should the course be and split up how?
I'd like to keep CS1315 to 3 credits: Matches the Core Area B requirement, same "size" as CS1321, not as much as a cost as 4 credits if a student decides to go on to CS1321 or COE1361. Agreed?
But how to split it up?
- Option 1: Three credit hours of lecture, with optional recitation and a "lab-ette" (an on-line activity that students must do for homework). This is the structure of CS1321 now. Advantages: Uses the computer that Tech makes them buy. No load on labs. Disadvantages: No at-hand help from TAs. (There might be some viable alternatives here, like evening sessions for "Bring your laptop to this room (not a lab) and a TA will help you through your labette.")
- Option 2: Two credit hours of lecture, 1-2 hours of recitation/lab. Advantage: There are TAs available to help students. Disadvantage: Will there be lab facilities enough to handle the load if CS1315 grows? To be determined as I plan the class more: Will there be enough time to cover the content in the 30 hours of lecture? (In my first pass plan for the lectures, I barely fit into 30 lectures – see Curriculum)
Option 1. Dispile the advantage of having individual attention in
Labs, I am not sure that we have the facilitites or the TAs to
provide QUALITY individual assistance. – Tom Morley
I also note that you treat pictures as (2 D) arrays of RGB values.
This is a good simplification, but (disregarding compression) this
is not what is actually stored. Presuably you will provide
the necesasry conversions 2D RGB <--> jpg Tom Morley
Absolutely, Tom. The Picture class that I've built so-far (on the Technology page) translates GIF and JPEG transparently into a representation of (to be specific) ARGB: RGB plus Alpha values. Mark Guzdial
I like Option 1 for the same reasons as Tom mentions. However, I like the idea of bring your laptop to a room for hands on help - maybe to a room that has a few computers that students can use if they don't have a laptop. donna llewellyn.
Thanks, Donna. I think a combination is the way to go. Mark Guzdial.
Jumping to this from the perspective of a TA, I've found that there are a handful of advantages/disadvantages to each, while there's also the other side of logistical planning.
In option 1, there's been a large swing in the CS1 (under two different languages) where the students that wanted help came to a recitation and had a very intense 2-hour help session. This method worked because the delivery of the course topics had been refined over years to a consistant presentation that needed little "additional comments" from TAs in recitation. This refining process ment that of the 40-60 students that might be in a room for recitation, only about 20 (at most) would show-up.
When the language for CS1 changed, this "optional" format really didn't become optional anymore. The attendance of recitation (atleast for my sections) shot-up to roughly 70+% for each week. This trend still continues, but I've noticed recently over this summer semester, that attendance is starting to trickle off again.
As for option 2... I'll admit that cutting 1 hour from lecture each week has a very crippling effect on materials of this nature– in part because the instructor may feel rushed, but also because students will feel equally rushed, and often times they are the ones to suffer when material is presented in a irradicly-rushed manner.
It seems that the question is, "How do we gain the advantage of having hands-on help from the TAs, get the students to go, and have the equipment to do this?" This problem seems to stem from the fact that these two models are seen at the adminstration level as being completely different, but from the stand-point of a TA, there's very little difference between them in terms of teaching a lab.
When recitations were required every week (under CS1), attendance naturally was running at a mid to high 90%. When it became optional under the same language that had been taught for more than a year or two, the attendance went down. Once the language changed (and recitation was still optional), attendance went back up. So the issue of getting the students to show-up for help is not the general problem based on my experiance.
The general problem seems to be where/how to pull off these "recitations" to maximize it for people that need the help. The current trend in CS1 is, "Go and try this on your computer, and if you have problems, talk to your TA in office hours or recitation." This doesn't seem to be too bad of an approach so long as students have done the "go and try this..." part. When this doesn't happen, the TA has had to "degenerate" into a lecture format for recitation. To help facilitate this, some TAs bring their own laptops to recitation and use projectors to walk students through how to do various processes.
I, not owning a laptop, see to it that while I do several examples on the board, there are explicit instructions about where certain actions should be performed and what order they should be done it. I have noticed that the "non-labtop" approach tends to call for a much greater awareness on the TA's side to watchout for potential mis-communications between what (s)he says and what the students might think (s)he means by what was just said.
The end result of this long long drawn out explination of mine is that in short, I would go with the "optional" recitation formats to maximize the time lecture components have. Recitation/Lab components have their time and place, but the logistics and means a completely different issue that can be worked around independantly of the "scheduling structure" of where to assign credit time.
NOTE: I'm not completely sure why this matters, but I figured this input would be helpful in showing the impact from the side of the TAs because in the long run, I think this change happened when CS1 went from a 4 hour course under quarters to a 3 hour course under semesters.... the long-run result is that there wasn't much of a change because the instructional format was changed (aka CS1 change the teaching language after only 2 semester).
How much "utility programming"?
Thinking about the kind of programming that students will do as professionals from IAC, Architecture, Sciences, and DCOM, it occurs to me that utilities programming is probably a common expectation. These would be 2-12 line programs typically that might do something like:
- Copy all the files in this folder whose modification date is today into this other folder.
- Run all the files that match this pattern through this program over here.
- FTP all the HTML, JPEG, and GIF files from this directory to this server
Should we cover that kind of programming? It's much easier than media computation and probably quite practical, but not as exciting and doesn't really introduce much in the way of new CS concepts. (I've included it in my current Curriculum plan.)
In Unix? That's the way to do this stuff Tom Morley
That would certainly make it easier, but I was actually planning to teach people to do this in a scripting language, Jython, rather than require everyone to learn UNIX. - Mark Guzdial
It would actually make some sense for the students to learn a
limited ammount of unix. - Tom Morley
I don't know enough about how people now do these things and the pedagogical issues in teaching this to really answer. But, philosophically, I believe that if this is going to be a common thing for them to need to do later then we should teach them how to do it and in as natural a setting as possible, i.e. a setting that is as close as possible to the setting where they will eventually have to perform the tasks. donna llewellyn
Agreed. Tom's right that UNIX is the easiest way to do it, but, Windows is 95% of the planet. If I teach them to do it in Jython, they'll have a tool that'll work in any language – and is actually pretty commonly used in UNIX (at least for Web work). - Mark Guzdial
Program via API or via External Program
One of the topics I've been planning to cover is the transformation of numeric text into graphs: The process of getting some visualization of numeric data, from whatever source (simulation, experiment, etc.). I expect that we'll cover Excel in recitation/lab/labette, but I was planning to also cover the programming side of that (e.g., reading from a file, and perhaps building charts).
But how to generate the graphs? Here are the two options I'm thinking about:
- Option 1: Use some internal charting package and teach students to use a programming interface ("API" - Application Programming Interface) to tools. I have found a Java Charting package (from NCSA, I think) that we can access through Jython.
- Option 2: Use an external program and script that program. For example, there is a free, open-source, cross-platform tool for scientific graphing called GNUplot (a popular tool among UNIX-using scientists). Instead of using an API, we could generate input files for gnuplot. Slightly easier programming, slightly less flexible.
If I took Option 2, I could do something similar for image manipulation. There is a free (open source, cross platform) tool called GIMP that can do anything Photoshop can AND is scriptable. So, we could show students how to write programs to do photo/image manipulation – particularly useful when processing a bunch of images, like the frames of a movie. Downside: There is a language associated with these other tools – it's simple, and designed to be so (designed for use by non-CS professionals), but it is yet another language to deal with.
But I'm not sure what to expect for these students. As they go on to their careers, will they be more likely to want to learn the API to some tools, or to do small scripts for some external program? (In the first pass lecture plan, we do a little API but mostly external programs – see Curriculum)
The problem with plotting is that most of the students will
know how to plot, at least somewhat. Most students would eventually
either use Excel or matlab to plot data if they were forced to
do something. In either case this might involve producing a file that
is used (as input) by Excell or matlab. Actually, I would do it in mathematica. Tom Morley
Agreed – some students will know how to do this already in Excel (or elsewhere). That's the driver for the argument to see programming as a preparation stage, rather than doing the plotting by the student themselves. - Mark Guzdial
This is a small point, but the problem with Excel graphs are the lack of producing error bars (at least to my knowledge). Many folks in the sciences use other external plotting programs (i.e. Sigma Plot by Jandel). I wouldn't assume all students "know how to plot" even though the majority figure it out.
I just checked – the latest version of Mac OS X Excel graphs does include error bars. I don't know about the Windows version, but I'd guess that it would. Would that be acceptable, or would you prefer us to teach an external program? GnuPlot is free, will run on everything, and does have errorbars. Mark.
The Curriculum and Technology is under development now. Please feel free to look over anything that's there and give me comments – especially on the lecture plans.
From what I've read this is an interesting outline. One thing jumped out at me. In Curriculum 4.3 "Recording sound well takes LOTS of samples", there's a bug. Humans can hear well below 7 kHz, even us old folks. For example, middle-C is 261 Hz. It is generally accepted that 20 Hz to 20,000 Hz is the range of audible freqs that must be amplified in a good stereo HiFi system. Sampling at twice 20,000 gives 40,000 Hz. So why 44.1kHz? In order to make an actual system easier to build, you oversample by a little, hence 44.1 kHz on CDs. jim mcclellan
Thanks, Jim! I'll fix that. Mark Guzdial
Looking back as an ancient person, ie, college before computers, I wish now I had some basic knowledge of programming. My point is that these students as freshmen have no idea where they will go with their careers. I found myself programming ultra simple stats programs in SAS as that was what was required for my doctorate. Now I create two co-webs which is really html for dummies. But I know people who can't manage even that. As an educator, is it possible to stratify learning how to program so that a student can return at some point or feel "introduced" to the concepts. Being on the outside of computer science (and a woman) I fall into that it's all a mystery sort of thing and very hard to get a handle on. I am so glad you have read and quoted Margolis and Fisher. I think we don't know the why's of the gender/technology issues. But this course might make a real difference for a woman just starting college especially since she has no idea where she'll go with that engineering/science/tech degree and what demands will be made on her later. I have no idea why the students dislike Scheme but they come in droves for the one tutor we have who offers CS1321. And I hear a lot of fear in the comments posted. It may be more an issue of overcoming that fear as much as crafting a course that will be helpful to non-CS majors. I'm sure I'm not saying anything you don't know. I'm just ruminating on some methods to lure students into the course you are developing. I'm thinking that the place to start is before the students even get to the course. I looked at the curriculum. I'd be fearful but to an 18 year old who avoids being "different" like death, a woman who feels inadequate would rather die than admit she can't make her way around all that "foreign" language. Sorry if I went to an outer fringe. I do empathize that you can't make 30 different courses for any one class. And at some point, a student has to learn the material no matter what. I'll keep looking at your site. I think this is the best idea since sliced bread! Paddy Kennington, Success Programs
Thanks so much, Paddy. I appreciate very much your perspective – it's important to me that I have advisors working with frosh, and their fears, and who aren't computer whizzes! I think that the curriculum probably does look scary right now. Let me get those translated into some Powerpoint and real examples, and I'll aim to make it less scary.
I did read Margolis and Fisher, and found it fascinating. But I note that they say that they identified needs in the curriculum, but they don't feel that they got the curriculum changed in the ways that they like. (They say in the book that things are still in flux. I've heard that they say in person that some things worked and some didn't.) I'm hoping that this class, and the changes being made to COE 1361, will put us on the forefront of thinking about how the curriculum needs to change to offer different routes into computing ideas. - Mark Guzdial -
I'm sure everyone has pet areas that they would like to see covered but I hope you could have some discussion the diversity of users abilities to use computer systems. This could include a simple overview of usability but also include the needs of users who are not 18-35 year old males, i.e. children and adults with disabilities and aging users.
We have material we are developing for lectures on accessible design and would be glad to contribute those and assist with some lectures.
I think that would be beyond the scope of this class, John. Right now, we'll be be building no user interfaces, not even Web pages. This class isn't aimed at software developers, but builders of tools (e.g., little utilities) for themselves. That sounds like something that might go into CS1321, or even CS2340 (the CS-major-required UI course – http://coweb.cc.gatech.edu/cs2340) - Mark Guzdial
Link to this Page