CMSC 100

Introduction to Computers and Programming
Fall 2009


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 @
Office Hours: Tuesdays 10:00-11:00, Thursdays 3:30-4:30

When: Tuesday/Thursday 1:00-2:15
Where: ITE 227
CMSC 100H Discussion: Thursday 2:30-3:20, ENG 104A (NOT in ITE 233 as indicated on the registrar's site!)
TA: Zhong Ren, renz1 @, ITE 340, office hours Tuesday 4:30-5:30, Wednesdays 2:00-3:00

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 programming in Python.

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.


This course has been approved 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: Wanda Dann, Steve Cooper, and Randy Pausch, Learning to Program with Alice, Prentice Hall, 2006 (ISBN 0-1318-7289-3) Learning to Program with Alice (2/3), Prentice Hall, 2009 (ISBN 0-13-208516-X). (Note: The bookstore carries the 2nd edition. You may also use the first edition; I will point out where there are differences in the books, and will provide "filler" information for those using the first edition where necessary.)

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%), homework assignments (35%), 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.

Homework assignments (35%). There will be a homework assignment each week. Some assignments will consist of mathematical exercises, short-answer questions, and/or short essays. Other assignments will be programming assignments 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.