|To leave a comment you must sign in.
Create a Web Account:
To leave a comment you must sign in.
Create a Web Account:
The high attrition rate for computer science students has generated significant debate as to the cause and possible actions to address the problem. For the introductory courses some departments have switched to new programming languages like Alice or Scratch that are much more visual than traditional languages and are considered easier to learn.
Many instructors have also turned to hardware and software technology in search of better ways to inform and motivate their students. Fortunately, computer science educators are in an enviable position. As programmers, they have the means to write software to meet the pedagogical goals of their courses if existing software doesn't fit the bill. As a result, enterprising computer science educators have created software tools to help faculty teach and students learn virtually every topic in computer science. Some of these tools are designed for the physical classroom, others for the online classroom, and others for outside student activity.
This article will describe some of these home-grown software tools. I'll also describe how several general tools can be used in a computer science context to enhance the learning opportunities available to students. While the focus is computer science, many tools also apply to other disciplines.
Other tools discussed in this article focus on specific topics in computer science. Although these will not be of direct use to faculty outside computing, they are indicative of how technology can enhance learning and will hopefully serve as inspiration to develop e-learning tools for other disciplines. This article will not get into specific programming languages, editors, IDEs, or software development tools. Instead the emphasis is on technologies that directly apply to teaching and learning.
As an additional resource, many of these technologies are discussed at conferences such as those sponsored by ACM's Special Interest Group on Computer Science Education.
A tablet with an active digitizer for writing digital ink is probably the single piece of technology that has had the largest impact on my teaching. If you use PowerPoint, then you can easily transition to using a pen to annotate your slides. Microsoft OneNote ($79.95), Microsoft Windows Journal, and Jarnal (free) mimic writing on paper, but you can start with an outline or pre-developed content that might otherwise be difficult or time consuming to write down during class.
A typical lecture for me involves some slides with portions of a program already written or pieces of a diagram already drawn, and then we complete the code or diagram together in class. In the screenshot shown (Figure 1), I've started with a description of the Towers of Hanoi game before class, then sketched in blue the recursive solution in class. This setup allows me to have prepared "PowerPoint" content, but instead of whizzing through difficult material (and getting glazed-over looks from students) I describe it step-by-step via live handwriting.
If you decide to use a tablet for presentations, a small yet useful utility is PenAttention (free), which highlights the location of the pen so students can see what you are pointing at. In preparing lectures, I also make heavy use of SnagIt ($49.95) to easily copy something on my screen to put into my presentation.
Screen Recording Software
For technical content, students often need to review material multiple times before they get it. Both their notes and the instructor's notes may be undecipherable, especially if material is erased and written over.
One of the best techniques to address this problem is to record the instructor's computer screen together with recorded audio. When used with a tablet, the entire lecture (including handwriting) is captured, and the resulting video can then be put online for students to view. Camtasia Studio ($299; or Camtasia for Mac $99) is a popular and easy-to-use program for this purpose. Other alternatives include Captivate ($799) and My Screen Recorder Pro ($99.95). While you might expect the availability of recorded lectures to result in fewer students coming to class, my experience (and that of many other faculty) is that most students still come to class and use the recorded lectures to review the course material at their own pace.
Classroom Interaction Systems
A one-to-one computing environment is one in which every student has a computer. This might involve a computer-based classroom or institutions with a requirement for every student to own a notebook computer. An effective way to leverage this technology from a learning perspective is to employ classroom interaction systems.
Classroom Presenter (free), developed at the University of Washington, lets an instructor transmit his or her slides over a network (typically wirelessly) to every student's computer. Designed for a Tablet PC, the instructor can annotate slides, and the annotations appear on the student's screen in real time. Students can add their own notes, too. While Classroom Presenter's core functionality is useful, the real magic happens when students are given a problem to complete on their computer and electronically submit their work to the instructor through the interactive system. The instructor can then view students' submissions and share them with the class if desired.
In this example (Figure 2), the instructions are in black and the student has submitted his handwritten work in green. In this case, the student's response for how to delete a node from a binary search tree is incorrect, and it gives the instructor a chance to describe what's wrong. The beauty of the approach is that all students actively participate in the exercises and receive immediate feedback regarding their misconceptions instead of waiting days or even weeks for corrected homework assignments or exams. Incidentally, I have found that these systems help keep students engaged and lessens the number of students that would otherwise surf the web.
Text messaging software is a convenient way for students to ask questions. Usually I get questions about homework assignments, and when students have a question about code, text messaging enables them to paste code snippets directly to me or their peers—although many messaging clients have a tendency to parse portions of the code into smiley faces (adding a space between symbols usually prevents this).
Digsby (free) is a messaging client that integrates AIM, MSN, Yahoo!, ICQ, Google Talk, Jabber, and Facebook chat all in one interface. In my experience, there are usually two groups of students: one that prefers to ask questions in person, and one that prefers to ask questions over messaging clients.
The best way to learn to program is to write actual programs. Several websites exist to give students practice in writing mostly small programs. CodingBat by Nick Parlante is a site that lets students write online programs in Java or Python and get instant feedback as to the correctness. In the screenshot shown (Figure 3), I've entered "return a+b;" as my solution. Upon clicking "Go" the program is compiled, executed with a suite of test cases, and the table of test cases appears on the right which shows which cases worked and which cases failed.
Large group projects benefit from collaboration and code repository tools. If your institution uses a course management system, then there is probably a wiki or forum that can satisfy the collaboration piece but likely lacks code-specific features like issue tracking or version control.
Google code (free) is a great alternative that integrates downloads, a wiki, issue tracking, and subversion or mercurial for revision control. If you prefer a locally hosted project management system, you might consider ProjectPier (free), which is a PHP-based system that supports task management, messaging, file management, and versioning (but not for version control on individual source code files). Many other free and commercial online project management systems exist, but if you elect to go this route be prepared to perform some setup and administration tasks.
MOSS (free) is an internet service that takes multiple source code files and returns a report with the files that are suspiciously similar to one another. It works with all common programming languages. While MOSS won't tell you if a student copied a solution off the internet, it will tell you if two or more students are copying each other.
Program and Algorithm Visualization
Visualization tools can help students learn how programs run and algorithms operate. Jeliot (free) is a tool that shows step-by-step how data, methods, expressions, and objects interact in a Java program.
JHAVÉ (free), the Java-hosted algorithm visualization environment, is a tool used to build custom animations that tie in with algorithms in Java. It can display a visualization of the algorithm synchronized to lines of code and can include an audio explanation of the algorithm as well.
For algorithms, there is also The Algorithm Visualization Portal, which has links to many different algorithm and data structure visualization implementations available online.
For the theoretical topic of automata and formal languages, JFLAP is software that allows students to create and graphically visualize DFAs, NFAs, regular expressions, context-free grammars, pushdown automata, turing machines, and L-systems.
Assignments, Lectures, and Curriculum Ideas
If you're looking for new and engaging assignments for introductory programming courses be sure to check out the Nifty Assignments archive. Sedgewick and Wayne also maintain a collection of Creative Programming Assignments and there are some engaging assignments from Ed Karrel's Programming Contest Archives.
For ideas on organizing your class, search the Computer Science Syllabus Repository set up by Virginia Tech and Villanova. You might also check out the video archives of MIT's Open Courseware, the University of Washington CSE video collection, or Google Tech Talks for lecture ideas.
Finally, Ensemble is a NSF National Science Digital Library Pathways project that seeks to establish a national digital library to connect computing educators. It serves as a portal with links to a wide range of CS educational topics, including links to many of the sites referenced in this article.
This article has touched on just a few of the many e-learning tools that are available to computer science educators. If you would like to engage in further discussion regarding CS eLearning tools consider attending one of the SIGCSE or CCSC conferences.
About the Author
Kenrick Mock, Ph.D., is an associate professor of computer science at the University of Alaska Anchorage. He has taught more than 20 courses and is a co-author of several introductory textbooks on C++ and Java programming. His blog on teaching with technology is online at www.math.uaa.alaska.edu/~afkjm/techteach.
To leave a comment you must sign in.
Create a Web Account: