UMBC CMSC 201 Resources
Here are some resources that are specific to CMSC 201 at UMBC.
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.
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.
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 &
- 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
- The CS Help Center has an Emacs
- 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
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
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?"