Functional Problem Solving (CSC 151 2014F) : Readings
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] - [FAQ] [Teaching & Learning] [Grading] [Rubric] - [Calendar]
Current: [Assignment] [EBoard] [Lab] [Outline] [Reading]
Sections: [Assignments] [EBoards] [Examples] [Handouts] [Labs] [Outlines] [Readings]
Reference: [Setup] [VM] [Errors] - [Functions A-Z] [Functions By Topic] - [Racket] [Scheme Report (R5RS)] [R6RS] [TSPL4]
Related Courses: [Davis (2013F)] [Rebelsky (2014S)] [Weinman (2014F)]
Misc: [Submit Questions] - [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] - [Issue Tracker (Course)]
Summary: We examine the operating system environment in which the course is conducted.
As this is a workshop-style course (a.k.a. “a constructivist, collaborative, computing course”), you will be working on the computers in our classroom on most class days. You will quickly find that these computers have many similarities to the computers you have used in the past, but that there are also some differences. (When we started teaching this course, many students hadn't used computers at all. You will occasionally find comments in the readings and labs that reflect that different perspective.) In this document, we will explore some of the key issues you may need to consider in working on the Linux computers that we prefer in computer science.
A modern computer is much more than a bunch of circuitry. Most of us think of computers in terms of the operating system that they run and the graphical user interface that accompanies the operating system. Those terms may be new to you, so let us consider them briefly.
As its name suggests, an operating system (also “OS”) is the system used for operating the computer. It is a large computer program that manages and simplifies most of the underlying hardware. The operating system is responsible for managing files, managing other programs, dealing with the keyboard, screen, and other peripherals, and much more.
In the old days of computing (e.g., when your instructor started), you interacted with the operating systems almost exclusively by typing on a keyboard and seeing results on a screen (yes, we had evolved beyond punchcards). There was no mouse. To us, the operating system really referred to the underlying capabilities.
These days, you interact with computers through a graphical user interface (also “GUI”). Its name is similarly clear: It's the interface through which you use the computer, and it's a graphical (as opposed to textual or auditory) interface. Modern graphical user interfaces stem from work at Xerox PARC, although they were introduced to the broader consumer world through the Apple Macintosh. To most modern users, the GUI is indistinguishable from the OS. (Programmers may still find it useful to distinguish between them.)
In Grinnell's computer science department, we use an operating system known as Linux. Linux is distinguished by being an Open operating system (which means that anyone who has the knowledge and desire to make modifications to the program code of the operating system is permitted to do so) and a Free operating system (which means that it doesn't have to cost you anything to install it on your computer, unlike the Macintosh OS, with a list price of about $150, or the Windows OS, with a list price of about $400). Admittedly, the Linux community uses “Free” in two ways, in the way we used it above (as in “Free Lemonade”) and in the way we used “Open” (as in “Freedom”).
Why do we use Linux rather than Macintosh OS or Windows, particularly since much of the rest of the institution uses Windows? One reason is that we consider Linux to be technically superior: It is less likely to crash, it is freer from viruses and other irritants, it has a much longer history of separating what the average user can do from what the administrator can do. More importantly, it is much more portable. You can sit down at any Linux computer on our network and have exactly the same set of files naturally available. (Think about how many times you save a file on one Windows box on campus, forget to move it to StorageServer, and then cannot access it elsewhere on campus. That will never happen on the Linux network.)
Many members of the department also have a philosophical preference for the Open Source and Free Software movements, of which Linux is an important part. We believe that good software should be free, in both senses of the word.
Linux, unlike Macintosh OS X or Microsoft Windows, permits you to use a variety of GUIs on top of the same underlying OS. We have chosen to use a GUI called Xfce. Our experience suggests that Xfce provides an appropriate balance of power, configurability, and usability.
Xfce, like Microsoft Windows, provides a task bar at the bottom of the screen. You will click icons on the task bar to start applications. You may use a popup menu on the task bar to “log out” when you are done with your work.
If you want to explore other GUIs (sometimes called Window managers), you can select your GUI when you log in to the MathLAN.
So, what does this all mean for you, other than that the computer scientists at Grinnell worry about these things? It means that you will have to use an unfamiliar GUI in this course (and in any future computer science courses you take). Fortunately, Gnome is similar enough to other operating systems (particularly to Microsoft Windows) that you should find it fairly natural to use.
Like the Microsoft Windows workstations on campus, the Linux workstations require you to log in to use them. Our Linux network uses an independent password system, so you should remember that you have different passwords (unless you take the time to make them the same). In contrast to passwords on the Windows network, Linux passwords are stored in such a way that no one, not even the system administrator, can extract the original password, so it is safe to use the same password. (Of course, someone trying to guess your password still has an opportunity to do so.)
In this course, you will be using a variety of programs. There are four that we consider particularly important.
This is a class in computer science, not in using Linux. Hence, we will provide you with only the basic instructions for using Linux. It is, of course, possible to use the Linux system in more advanced ways. You may find it useful to talk to other folks who use the systems to learn particular tricks that they find valuable. We will also point out a few from time to time.
Here's one: Xfce supports multiple desktops. You can see a two-by-two grid of desktops in your task bar, with small representations of each window. You can switch desktops by clicking on any of the four. You can also drag windows between desktops. Many people find it helpful to use separate desktops for separate tasks, such as one desktop for documentation and information and another desktop for programming. It's also useful to keep one desktop clear, so you can use it for looking at files. The corresponding lab will give you some opportunities to explore desktops.