I will teach a First-Year Seminar this fall, called "The Beauty and Joy of Computing" (after a course at Berkeley) [BJC]. All freshmen are required to take one of these seminars, which are offered in different subjects; the general pedagogical goal is teaching them to be college students. I taught it a year ago, and have a few reflections in preparation for a new round. There is little chance that my students will read this, but I am sensitive about confidentiality, so details are suppressed or changed.
I am proud to work at a land-grant university with almost open enrollment, which requires careful treatment of widely disparate student backgrounds. The challenge presented by the computer science version of this course is that the student interest in computing ranges from nil to avid, and the student experience with computing ranges from none to expertise, where the expertise ranges from narrow to haphazard. I cannot pretend to have resolved these disparities into a harmonious program of study, but I can sketch a few of my attempts.
To introduce first-year students to the college environment, the course includes a research paper, group projects, and oral presentations. They need to learn to distinguish peer-reviewed results from public relations, and scholarship from argumentation and opinion. I would add that they need to be able to explain AI, Internet, and general hardware and software concerns to their peers, their families, and the public.
I hold the pedagogical principle that in every class, no matter how introductory or discursive, the students should come away with a body of knowledge. In this case, it's a few of the basics of computer science. We code or complete rudimentary Java programs with the BlueJ development environment. We look at number systems, character codes, encryption, compression, and similar topics all the way up to the Fundamental Theorem of Arithmetic. Components that did not work for us include the block-style programming platform Snap!. I prefer beginners to see plain source code in a text file, for the standard view of how computers are programmed.
To engage students whose strengths lie in areas other than programming, we review contemporary Internet issues, of which there are plenty. These are presented via the 2008 textbook by Abelson, Ledeen and Lewis [B2B], heavily supplemented by recent journalism, from the New York Times and other sources. A list of current issues serves as the sign-up choices for the group project.
I believe that young people who are interested in computers should also learn about the humanities (and so should other young people), as befits the subject of this blog, the philosophy of computer science. So I assign the reading of a classic novel that shares one of the themes we study. Last year, the country (and the world) read Frankenstein in honor of its 200th anniversary. We joined in, discussing it as an account of the unintended consequences of technology [Hill 2018], notwithstanding that a 19th-century novel consisting mostly of lengthy soliloquies on guilt and misery is heavy going, and that there's no actual technology.
Other classics that parallel issues of modern technology (besides 1984 and surveillance) include The Scarlet Letter and public shaming. Naturally, many great works of science fiction reflect tech issues, but I want a distant rather than close parallel, for purposes of abstracting the common theme. Suggestions are welcome! Such supplemental material also offers a variety of bite-size assignments, such as short reflective writings, and word definitions, which students then present in one-minute talks.
General Pedagogy for Freshmen
Here are mixed tips for teachers, organized only by idiosyncrasy:
- Don't deprecate or cover up the difficult, tedious, and fussy bits. Discuss input and output; variable declarations; defaults and parameters on the installation of software. These are the counterintuitive protocols that people must face if they are to master computers.
- Expose the critical points of misunderstanding. Give exercises that distinguish between A[i]+1 and A[i+1]; that interpret 11010011 as a char, number, and instruction; that contrast variable names such as
- Don't be coy. If you mention UTF-8, or the Fundamental Theorem of Arithmetic, or a substitution cipher, just tell them what it is, right then and there. You can return to cover it comprehensively later.
Group project: To preclude students working with their friends, have them form teams with classmates who are not already entered in their phones. Require meeting schedules and regular updates on team member duties.
Research paper: Give incremental assignments, and require suggestions to be incorporated into next draft. Carefully distinguish between objective journalism and research papers as acceptable sources, and marketing and white papers (which proliferate subversively on the Web) as unacceptable.
I still seek suitable research publications. What journals or magazines provide peer-reviewed articles on computer science for the neophyte? (Of course the Communications of the ACM provides many suitable articles, but what else?) Our library subscribes to standard ACM and IEEE publications, but online. For purposes of browsing and discovery, I direct students to special technology sections or issues of major newspapers and news magazines. Again, suggestions welcome!
Notice that teaching a class at the novice level invokes the standard areas of modern philosophy:
- Metaphysics, in extracting the essence of the subject.
- Epistemology, in considerations of how to convey the essence of the subject.
- Ethics, insofar as the teacher answers the question, of the subject, "What good is it?"
- Aesthetics, even, in how to make it attractive to learners... This may be a sly application rather than a scholarly endeavor.
Let's do our best for our students, whoever they are.
[B2B] Blown to Bits: Your Life, Liberty, and Happiness after the Digital Explosion. 2008. Hal Abelson, Ken Ledeen, and Harry Lewis. Addison-Wesley. First Edition.
[BJC] The Beauty and Joy of Computing. University of California at Berkeley. Advanced Placement course, for late high school and early college students, with materials provided under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Accessed 25 July 2019.
[Hill 2018] Robin K. Hill. 2018. FicitonStein. Blog@CACM post. November 21, 2018.
Robin K. Hill is a lecturer in the Department of Computer Science and an affiliate of both the Department of Philosophy and Religious Studies and the Wyoming Institute for Humanities Research at the University of Wyoming. She has been a member of ACM since 1978.