Time and location
Lectures are held Mondays, Wednesdays, and Fridays from 3:35 to
4:25pm, in room B75 of Amundson Hall. It's right by the underground
connection from Keller Hall. The Schedule page linked from the lists
the dates of all the lecture classes.
Labs are held Wednesdays in 1-250 Keller Hall. The list of the
individual lab sections is on the Labs page linked to the left.
Following the university-wide standard schedule, the final exam
will be held on Monday, December 17th, from 8:00am to 10:00am. The
final exam location will be announced after it has been officially
scheduled (often it's in the same room as lectures).
Office: 4-225E Keller Hall
Home page: http://www.cs.umn.edu/~mccamant
There are also several teaching assistants. Information about the
TAs and about all the staff's office hours are on the Staff page
linked on the left.
Where to send your electronic questions? If it's something everyone
could benefit from the answer to, use the Moodle forums. For general
course questions that should be private, please use the
csci2021f18-010-help at umn dot edu mailing list, which goes
to all the course staff.
CSci 1902/1913/1933 or instructor's permission
This course will introduce you to the basic concepts underlying
all computer systems and prepare you for in-depth study in any area of
computer science. This is the first course on computer organization
and computer systems. It provides broad coverage of processor
operation and the aspects of system software such as compilers,
linkers, and operating systems that are important from the
programmer's perspective. It also introduces you to the organization
of basic components in modern computers such as processors,
hierarchical memory systems, and includes basic concepts in logic
Why do you need this course if you have already taken the
introductory programming sequence? Oversimplifying matters somewhat,
CSCI 1113/1133 is based on a simplified model of program execution,
and CSCI 1913/1933 builds further layers of abstraction. CSCI 2021
looks "under the hood", and introduces greater detail about system
behavior and operation.
Note that this is not primarily an assembly language programming
course. You'll get some practice reading and writing assembly language
during the course, but we'll use it as a tool to understand how the
machine works, not as a language for its own sake.
- Required Textbook: R. Bryant, D. O'Hallaron. Computer Systems: A Programmer's Perspective, third edition. Prentice Hall, 2016. (textbook web page). We recommend that you get a paper version of the textbook; in addition to the DRM restrictions on the eBook, only paper books can be used during tests.
- Supplemental Readings: You'll find it helpful to get more
details about the C language that are given in the main textbook,
especially if you don't have much previous experience with C or
C++. There are a variety of books and free resources available. As a
free option, we've recommended chapters from The GNU C Programming
Tutorial, edition 4.1, by Mark Burgess and Ron Hale-Evans. The PDF version of the tutorial is available
here, and the Texinfo source is here. The tutorial is a bit out-of-date
or unpolished in places, but it has a pretty good pace and topic
coverage for our purposes. Look for a Moodle forum thread with errata.
Course Work and Grading
|Item ||Fraction of Grade |
|Lab attendance (12/15)||5%|
Responsibilities and Recommendations
- Read this syllabus and know the class policies outlined in it.
- Come to class regularly and be prepared to participate. Slides on the class webpage may be incomplete, and reading them isn't a substitute for attending lectures.
- Turn in individual and original work. This means that what you turn in must be your own work, and you must cite outside sources if you used any.
- Start your assignments early enough that you can get help and still turn them in on time.
- Read the directions for submitting homework and follow them. It is your responsibility to submit the assignments on time.
- Pick up your graded homework and exams. They contain important feedback.
- Check the class web page regularly for announcements or changes.
- Keep up with the reading. Students generally find that they get much more out of lectures when they have already seen material introduced in readings.
- Do the homework exercises. The exercises are provided as a way of reinforcing the lecture material and allowing you to practice
what has been learned in class. You will notice that they are similar in style to the questions that will appear on exams.
- Do not leave things to the last minute. The assignments will be challenging. Leaving them to the last possible minute is
a recipe for various kinds of disaster. Starting working on assignments as soon as they are released, rather than letting material go stale. Computers crash, files are lost, Murphy's Law is continually reinforced.
- Ask questions. We are here to help you learn, but we cannot read your mind. If a concept is not clear to you, ask a question sooner rather than later.
If there is not sufficient time in class, additional time can be arranged to go over a topic until you are comfortable.
- Program in C: The labs and hands-on assignments will involve reading and writing code in C. If you've previously worked with C++ or Java, you'll find many aspects of C familiar, but we'll be covering details of things like numeric operations and pointers that may not have been emphasized in previous courses.
There won't be time in class to teach every aspect of C, and teaching
C itself is not the main point of the course: you'll need to build
your familiarity with it and look for other resources as you have
- Submission and Late submission Policy:
Hands-on assignments are due at 11:55pm (i.e., just before midnight) on the date specified on the course schedule, and are turned in electronically with Moodle.
Written exercise sets are turned in on paper, and due at the beginning of lecture on the day specified on the course schedule. We strongly recommend that you type up your homework assignments and turn in printouts, rather than hand writing.
Late assignments submitted within 24 hours after the deadline will receive a reduction of 15% of the
maximum possible score, and no credit is available after 24 hours. (Other than excused absences such as illness.) Late exercise sets should be handed in at the instructor's office (slip them under the door if it's closed).
- Lab Access: We will be using PCs running Linux maintained by CSELabs for the lab activities and hands-on assignments,
and thus you must have
a CSELabs account. We recommend using CSELabs systems for hands-on assignments, but you can use any of the CSELabs open Linux labs, or access CSELabs machines remotely via FastX (VOLE) or SSH.
- Appealing: After each midterm or assignment is graded, we will post
a message on the class forum giving a time period (typically seven calendar days) during which we will consider re-grading requests. The message may specify particular staff to see about re-grades. If you are not satisfied, you can then appeal to the instructor. Be aware that we will generally regrade an entire exam or assignment, so the net change in your grade could be either positive or negative.
- Incomplete: Grades of incomplete will be given only when a student who has SUCCESSFULLY completed
all the hands-on assignments and at least one exam and is unable to
finish the final exam for reasons beyond their control such as a medical emergency.
- Missed exams: There will be no make-up exams. If you miss one midterm exam with a valid permission/excuse, it will be omitted from the computation of you grade, increasing the weight of the final exam to compensate. For example, if you miss a midterm that corresponds to 15%
of the total grades, you final exam is worth an additional 15% of your final grade.
Any additional or unexcused missed exams will receive a score of zero.
- Final Grade: To compute final grades in the course, we'll start by computing a numeric average using the percentages mentioned above. If your numeric score is at least 85%, 72%, or 60%, your letter grade will be at least A-, B-, or C- respectively. We may also apply a curve, to help improve the consistency of grades between different offerings of the course. The curve will apply only in students' favor (i.e., increasing your final letter grade). If we accidentally make the assignments too hard, the curve will make sure we don't fail everyone, but if we accidentally make the assignments too easy, or everyone just does better than usual, it won't stop everyone from getting As. But if student performance is similar to previous years, we expect to have a similar distribution of grades as previous years. Historically the average grade has been some kind of B; only the best students who show consistent mastery of everything get As, but A- is more common, there are lots of Bs and Cs, and it's hard to get an F if you keep up with the material and submit the assignments on time.
- Open book exams All exams will be open book. You are not expected to memorize obscure details; we'll try to design the tests so that if you've keeping up in class, all the information you need is included in the test. You may not use calculators, phones, or other electronics. Note that this means electronic books are not allowed. You can bring any books, handwritten notes, photocopies, or printouts.
- We take cheating very seriously.
You must do your own work and cite
sources as appropriate. Failing to do so is scholastic
dishonesty. Scholastic dishonesty includes, but is not limited to:
plagiarizing; cheating on assignments or examinations; engaging in
unauthorized collaboration on academic work; taking, acquiring, or
using test materials without faculty permission; submitting false or
incomplete records of academic achievement; acting alone or in
cooperation with another to falsify records or to obtain dishonestly
grades, honors, awards, or professional endorsement; altering,
forging, or misusing a University academic record; or fabricating or
falsifying data, research procedures, or data analysis. A student
found responsible for scholastic dishonesty will at a minimum receive
a grade of 0 for the assignment in question and be reported to the
campus-wide Office for
Community Standards (OCS). More serious
offenses will receive a grade of F (or N) for the course and be
subject to additional sanctions from the University. You should also
read the CS&E department's department-wide academic conduct policies and
this page about academic
conduct in computer science.
On written exercises and hands-on assignments, it is permissible to
refer to public external sources such as books, websites or software,
as long as you cite external sources that contributed to your
solution. However we have generally tried to design assignments so
that searching for external resources is not a necessary or efficient
strategy. So we recommend you spend your time thinking about
assignments on your own using in-class resources.
We would encourage you to discuss the concepts covered in class with
other students, and to help each other understand what assignments are
asking for and how to use the code we provide. During lab activities,
which are graded only by attendance, we encourage you to collaborate
in ways that help everyone learn from the activity. But written
exercises and hands-on assignments must be your own individual work:
you must not share information as a substitute for each student coming
to their own understanding and producing their own solution. Sharing
code or written answers to assignments is never allowed.
The SMART Learning Commons will be facilitating PAL
peer-assisted learning sessions focusing on CSci 2021, starting
during the second week of the semester:
|PAL CSCI 2021||Mon||9/10||2:30-3:20||Akerman 215|
|PAL CSCI 2021||Wed||9/12||1:25-2:15||Akerman 227|
Other Applicable Policies:
There are a number of other University-wide policies that apply to
this course which you should be familiar with. This list is an
abridged summary of longer policies which you can find linked from a
- Students are required to abide by the Student Conduct Code, which among other things prohibits disruptive classroom conduct.
- Personal electronic devices should be used with caution in the classroom lest they interfere with your or other students' learning.
- Students will not be penalized for absence during the semester due
to unavoidable or legitimate circumstances. Such circumstances include
verified illness, participation in intercollegiate athletic events,
subpoenas, jury duty, military service, bereavement, and religious
The requirement of verification for absences due to illness is waived
for a single episode absence that did not require professional
treatment, and did not lead to missing an important in-class event
such as an exam.
- The University considers that accepting compensation for taking
and distributing classroom notes violates shared norms and standards of
the academic community.
- Sexual harassment is not acceptable in the University setting.
- The University provides equal access to and opportunity in its
programs and facilities, without regard to race, color, creed,
religion, national origin, gender, age, marital status, disability,
public assistance status, veteran status, sexual orientation, gender
identity, or gender expression.
- The University of Minnesota is committed to providing equitable
access to learning opportunities for all students, including making
reasonable accommodations. If you have, or think you may have, a
disability that might affect your participation in class please
contact the Disability
Services office. If you are registered with DS and have a current
letter requesting reasonable accommodations, please contact your
instructor as early in the semester as possible to discuss how the
accommodations will be applied in the course.
- As a student you may experience a range of mental health concerns
or stressful events which may interfere with learning. You can learn
more about the broad range of confidential mental health services
available on campus via the Student Mental Health
Within the scope and content of the course as defined by the
instructor, academic freedom includes the freedom to discuss relevant
matters in the classroom and conduct relevant research. Students are
free to take reasoned exception to the views offered in any course of
study and to reserve judgment about matters of opinion, but they are
responsible for learning the content of any course of study for which
they are enrolled. (Adapted from the
AAUP Joint Statement on Rights and Freedoms of Students.)