Computer Science 100 (Introduction to Computers and Computing) and Pairs Programming

CS 100 is a basic literacy-type course for non-CS majors.  I created this course at the University of Tennessee, and it ran for the first time in Spring Semester of 1996.  The course has evolved substantially since that time, and the student base it caters to has also evolved substantially since 1996.  I started using Pairs Programming in the course in Fall Semester 2007.

First years (taught by me):  taught in UNIX on Sun workstations (we had no PC lab).  Large lectures, with lab sections of size 25-30.  We typically had 3 GTAs per lab, and I was usually around as well.  We actually taught both UNIX and PC skills--the feeling was that many or most students had access to PCs at home or in the dorms, but the University of Tennessee accounts provided to students were on UNIX machines, and so being able to transition back and forth would be useful.  I taught basic architecture--busses, caches and their benefits, different types of memory (ROM, RAM, DRAM, SRAM, etc)--help them learn how to talk the talk.  Labs worked with web pages, editing and graphics tools, etc.  We taught a bit of C--not so much to write programs but rather to help students understand what programs are.  I also taught networking basics--such as the RS-232 protocol, etc.  The enrollment was 240 a semester.  At that time, very few students had web skills, and so CS 100 was one of the few mechanisms at UTK for learning web design basics.

Next years:  taught be instructors.  The course shifted to PCs, and there was more emphasis on tools such as spreadsheets--there was less core CS material.  The enrollment stayed at about 240/semester, with one large lecture and lots of lab sections.  We still had typically about 3 GTAs per lab.  Minimal programming.

The third phase saw some of our faculty take over the course--they wanted to put "material of interest in Computer Science" into CS 100.  Still on PCs, we now taught quite a lot of Java and object-oriented programming, Turing machines, etc.  The enrollment dropped to about 50 a semester--not many happy campers even then.

The fourth phase (about 2004) saw one of our instructors take over.  We did less Java and more spreadsheets and tools--Turing machines disappeared.  After a year or two Java changed to Python and the emphasis was on the basics and the Tk graphics package.  Students spent about 5-6 weeks on Python and go through I/O, ifs and while loops, with the more adventurous students doing some animation.  We still had  3 GTAs per lab--they were kept busy the whole time.  We did some web pages, but the Python proved frustrating for many students, and the drop-out rate in the labs was substantial.  Enrollment slowly grew up from the low levels of phase 3.

Phase 4.1, so to speak.  I got back to being involved with the course for Fall, 2007.  I taught one section with about 70 students, and the instructor from phase 4 taught the other (about 80 students).  I had just returned from Stars! in Charlotte, and had attended Laurie William's Pairs Programming talk.  In July 2007 the Computer Science Department had merged with ECE and we were now part of the College of Engineering.  We were facing substantial reductions in the number of GTAs (GTA lines would be given in the next few years to other departments in the college).  I ran my labs using Pairs Programming, while the other section still had the students working on their own.  I also made a few changes to what I had my students do in the labs:  I placed more emphasis on web pages.  For the other section, web pages were, until the last week or so of class, not "published"--they could be viewed only as files by browsers, and not accessed via the Web.  I had to work out arrangements with our labstaff so that my students could have their pages on www.cs.utk.edu (the CS Dept's web server)--this was not as easy as it sounds, since we're primarily a UNIX/LINUX shop, and the students were using Windows XP--but we got it working.  Students, families, and friends could now see their pages on the Web--a reversion to Phase 1.  We had been giving awards (a couple of points on the final class average) in the course for outstanding web pages, and for Fall, 2007, 10 of the top 11 came from my students.

Phase 4.11.  I taught both sections of CS 100 for Spring, 2008, with an enrollment of 190+ and Pairs Programming througout.

pairs part 2