CMSC 100

Introduction to Computers and Programming
Fall 2008

OUR GOOGLESTUMP: spitbubbleboo (Posted 9/2/08, indexed on Google 9/18/08.)
Ever wonder how Google is able to find that one piece of information you needed on the huge web? How is so often able to recommend just the book you wanted to read next? Or how your GPS can find the way to your spring break hotel in Ocean City? Did you know that computer science researchers are currently working on neural prosthetic devices that will translate brain signals into actions? Or that computer science algorithms are at the core of ongoing genetic research to search for the genes that may control cancer?

The incredible advances in computer hardware and software that have been made in the last few years have completely changed the way we live in the world. It's easy to think of your laptop, cell phone, and iPod as just nifty gadgets -- but they are actually the product of innovative research in computer science, computer engineering, and electrical engineering. This course will peel back the layers of those nifty gadgets that you use every day, and help you to understand how these technologies are able to do the amazing things that they do -- and what challenges face us in developing the next generation of nifty gadgets.


Prof. Marie desJardins
ITE 337
(410) 455-3967 / fax (410) 455-3969
mariedj @

When: Tuesday/Thursday 1:00-2:15
Where: AC IV 151
CMSC 100H Discussion: Thursday 2:30-3:20, AC IV 150

Course Description

An introduction to the scientific, engineering, and mathematical principles that underlie the construction and use of computers. Topics include current and possible future applications of computers, the design of gates and circuits, binary logic, operating systems, programming and algorithms, databases, networks, the theory of computation, and the effects of computers on society. Students will learn some of the basics of computer programming using the Alice programming language.

CMSC 100H students will also participate in a weekly discussion section with the instructor, focusing on ethical and social issues, the research challenges in the field of computing, and more advanced programming constructs in Alice.

Catalog Description

A one-semester introduction to computers and their uses. This course is intended for non-science majors. Topics include computer programs, computer systems, personal computers and software packages, simulation, databases, artificial intelligence, computers in education and industry, and the effects of computers on society. Note: This course is not open to students who have passed CMSC 103. This course should not be taken by students planning to take CMSC 103 or CMSC 201.


This course is pending approval for UMBC's GEP Sciences distribution requirement, and to satisfy the following functional competencies: Technological Competency, Scientific and Quantitative Reasoning, Oral and Written Communication, and Critical Analysis and Reasoning.


  1. Required: J Glenn Brookshear, Introduction to Computer Science, 10/e, Addison Wesley, 2008 (ISBN 978-0321524034).
  2. Required: W. Daniel Hillis, The Pattern on the Stone: The Simple Ideas that Make Computers Work, Basic Books, 1998 (ISBN 978-0-465-02596-1).
  3. Required: Wanda Dann, Steve Cooper, and Randy Pausch, Learning to Program with Alice, Prentice Hall, 2006 (ISBN 0-1318-7289-3). **OR** Learning to Program with Alice, Brief Edition, Prentice Hall, 2007 (ISBN 0-1323-9775-7). (CMSC 100H students must buy the original (2006) book. CMSC 100 students may buy either the original book or the Brief (2007) book.)
  4. Required for CMSC 100H only: David G. Stork, Hal's Legacy: 2001's Computer as Dream and Reality, MIT Press, 1996 (ISBN 978-0262193788). (Available at the bookstore, and as an e-book at

Academic Objectives

The primary objective of the course is for students to gain an understanding of the scientific, engineering, and mathematical principles that underlie the construction and function of modern digital computers. Specifically, students will be able to explain how computers are designed at the gate and circuit level; will understand binary mathematics and digital logic; will be able to apply the basic principles of programming to construct a simple Alice program; will understand how computers can be networked together to interoperate and share information; will understand how computers are used to solve problems in many fields and discplines; and will be able to discuss the social and ethical implications of modern computers and their uses.

A secondary course objective is that students should improve their ability to communicate effectively in group discussions, class presentations, and written assignments.


The course schedule can be found here.

Coursework and Grading

Course grades will be based on class participation and quizzes (15%), written homework assignments (25%), programming assignments (10%), a midterm exam (15%), a final exam (20%), and a research paper (15%).

Class participation and quizzes (15% total). Students are expected to attend lecture regularly and to participate in discussions. There will also be short presentations (in individuals or in small groups, depending on the size of the class) on the students' research projects. Short quizzes on the assigned readings will be given at the beginning of many classes, and will be factored into the class participation grade. Note that the assigned reading is to be completed before you come to class each day! The quizzes have two purposes: one, to make sure that students are staying on top of the reading; and two, to help me identify problem areas that may need additional time in class.

Written homework (25%). Written homework will be assigned most weeks. These assignments will consist of mathematical exercises, short-answer questions, and/or short essays.

Programming assignments (10%). Several programming assignments will be given, using the Alice programming language.

Midterm and final exam (15% and 20%, respectively). There will be two exams, one in-class midterm, and a final exam at the time and place set forth by the university exam schedule. The exams will include multiple-choice, short answer, problem-solving, and short programming questions. The midterm will cover all material from the lecture and from the assigned reading. The final exam will emphasize the second part of the course, but will be cumulative (i.e., it will include material from the first part of the course as well).

Research paper (15%). Each student will be required to select an application domain that reflects one of their academic or personal interests (e.g., biology, geology, chess, football, or music). Over the course of the semester, they will research the application of computers in this application domain, and will write a research paper summarizing their findings. Each student will also be required to read and provide comments on two other students' research papers. Deliverables: topic proposal (5%), initial bibliography (5%), outline (5%), draft (10%), review (5%), and final report (70%).

Late Policy

Students are expected to know the course requirements and deadlines, and to plan their time accordingly. Course assignments are expected to be turned in on time. The late policy is strict, for several reasons. First, if you turn in one assignment late, it means that you'll be getting a late start on the next assignment. Second, grading is a time-consuming job, and it is unfair to the course staff to have to grade assignments piecemeal, as they are submitted. Third, I will frequently go over homework problems in class, particularly when students seem to be having difficulty with some of the concepts, and I can't do this if some students haven't turned their homework in. Fourth, time management is an important skill that is part of college success! See the course grading policy for the late policy.

Academic Honesty

By enrolling in this course, each student assumes the responsibilities of an active participant in UMBC's scholarly community, in which everyone's academic work and behavior are held to the highest standards of honesty.  Cheating, fabrication, plagiarism, and helping others to commit these acts are all forms of academic dishonesty, and they are wrong. Academic misconduct could result in disciplinary action that may include, but is not limited to, suspension or dismissal.  To read the full Student Academic Conduct Policy, consult the UMBC Student Handbook, the Faculty Handbook, or the UMBC Policies section of the UMBC Directory. [Statement adopted by UMBC's Undergraduate Council and Provost's Office.]

All students must read, understand, and follow the CMSC 100 course policy on academic honesty and grading. Each student will be asked to sign a copy of the academic honesty/grading policy, indicating that they have read and understood it.

Cheating in any form will not be tolerated. In particular, all assignments are to be your own work. You may discuss the assignments with anyone. However, any help you receive must be documented explicitly. A useful way to think about the difference between "discussing the assignments" and "cheating" is that after you have discussed an assignment, you should be alone, writing your own words, when you complete the assignment.

Written answers on all assignments (including homework, exams, and the research paper) must be your own work. Plagiarism (copying) of any source, including another student's work, is not acceptable and will result in at a minimum a zero grade for the entire assignment. If you wish to quote a source, you must do so explicitly, using quotation marks and proper citation at the point of the quote. A useful guideline is that if more than two or three words in a row are the same in your report as in the original source, you have plagiarized. gives an excellent overview of how to correctly cite a source. has guidelines on acceptable paraphrasing.  (See also the other documents at for useful suggestions on writing and citing sources.)

The same requirement applies to programming assignments. Your programs are expected to be your own, original work, and not borrowed, copied, templated, or modified from code that you have obtained elsewhere. Under no circumstances should you show your program code to another student.


We will use the Blackboard course site. There will also be a course wiki or blog to which students will be expected to contribute.