[an error occurred while processing this directive]

UMBC CMSC 201 Resources

About 201

Here are some resources that are specific to CMSC 201 at UMBC.

Computer Science

Here are some resources to help you get a better picture of Computer Science as a field and well as the sometimes peculiar culture that has grown up around it. Part of the enjoyment and satisfaction of mastering a discipline is mastering its the arcane secrets and inside jokes.

  • The Jargon file is a glossary of hacker slang that has been evolving on the internet and elsewhere since the mid 70's. If you want to know if you CAR has a CDR, you can find out here.


You will have to use Unix in 201 and other CMSC courses here at UMBC. Learning how to use it, and how it works, is also an important part of your education as a computer scientist.

  • Basic UNIX Commands - This is a very basic page of UNIX commands, such as how to copy, rename, delete, list contents of directories,change directories, print files, display files, change your password, get additional help using the man pages, and more.
  • Unix at UMBC - This includes ... some getting started information, coverage of unix commands, file processing, printing, environment customizing, use of Pine for email, and text editor coverage of Emacs, Pico & Vi.
  • Submit Documentation - Pages on the UMBC submit utility care of University Computing Services.
  • The UMBC Linux Users Group is an organization of and for people who use or would like to use Linux. UMBC-LUG members come from all walks of life and courses of study (membership is not limited to UMBC students). If you are interested in becoming a member of UMBC-LUG, just come to a meeting and check it out.


Being able to turn ideas into working programs is an essential aspect of computer science. During your career as a Computer Scientist you will probably master a number of programming languages. But you will always remember the first with great fondness. Dig in.

  • The Development of the C Language Dennis M. Ritchie, Second History of Programming Languages conference, Cambridge, Mass., April, 1993. Abstract: The C programming language was devised in the early 1970s as a system implementation language for the nascent Unix operating system. Derived from the typeless language BCPL, it evolved a type structure; created on a tiny machine as a tool to improve a meager programming environment, it has become one of the dominant languages of today. This paper studies its evolution. Comment: The designer of C tells how it came to be.
  • comp.lang.c FAQ These are frequently asked questions about C from the usenet newsgroup comp.lang.c. You can learn a lot about C by reading this.
  • Print the C Reference Card double sided, fold it, and keep it in your purse or wallet. It will come in handy. Caution: don't let your non-CMSC major friends see you with it, though. They won't understand.


We expect you to use the emacs text editor for 201.

  • This Gnu Emacs reference card when printed double sided and folded will come in handy. If you are using the Xemacs varienty, there is a custom card for that.
  • Wikipedia article on emacs.
  • The CS Help Center has an Emacs Guide
  • You can run Emacs on your own computer. The two main varieties of emacs are GNU Emacs and XEmacs, both of which are very good and each has its advocates. These can be installed on your hoe computer under Windows, Linux or Mac OS X.
  • Emacs tutorial

Recommended articles, essays, papers & books

Here are some articles and books on different computer science topics that are worth reading. Some are classic papers from the past. These are well written and introduced and explained important concepts to the field. Trust us, you will be a better computer scientist for having read (and thought about) them. Others are provocative articles that will challenge your ideas and make you think about your field and how it will evolve. Sill others are book, including novels, that we hope you will find stimulating.

  • Go To Statement Considered Harmful, Edsger W. Dijkstra, Communications of the ACM, Vol. 11, No. 3, March 1968, pp. 147-148. For a number of years I have been familiar with the observation that the quality of programmers is a decreasing function of the density of go to statements in the programs they produce. More recently I discovered why the use of the go to statement has such disastrous effects, and I became convinced that the go to statement should be abolished from all "higher level" programming languages (i.e. everything except, perhaps, plain machine code). At that time I did not attach too much importance to this discovery; I now submit my considerations for publication because in very recent discussions in which the subject turned up, I have been urged to do so.
  • Program Development by Stepwise Refinement, Niklaus Wirth Reprinted from Communications of the ACM, Vol. 14, No. 4, April 1971, pp. 221-227. Abstract: The creative activity of programming - to be distinguished from coding - is usually taught by examples serving to exhibit certain techniques. It is here considered as a sequence of design decisions concerning the decomposition of tasks into subtasks and of data into data structures. The process of successive refinement of specifications is illustrated by a short but nontrivial example, from which a number of conclusions are drawn regarding the art and the instruction of programming. Comment: Niklaus Wirth is a famous computer scientist who designed a number of important and influential programming languages, including Pascal and Mudula. This paper is important to the early days of software engineering and first articulated the basic ideas of top-down design of computer programs.
  • In the Beginning...was the Command Line is a lengthy essay by cyberpunk author Neal Stephenson.
  • Hackers and Painters: Big Ideas from the Computer Age, Paul Graham, 2004. "We are living in the computer age, in a world increasingly designed and engineered by computer programmers and software designers, by people who call themselves hackers. Who are these people, what motivates them, and why should you care?"
[an error occurred while processing this directive] Saturday, 12-Feb-2005 11:25:22 EST