Course Info

This page describes the official course syllabus. It does not include all
policies for every possible situation or answers to common questions students
have about the syllabus. For both of those purposes, please
see the FAQ.

Meeting Times

Lectures

Section

Day

Time

Location

AL1

MWF

11:00am

1002 Electrical & Computer Eng Bldg

AL2

MWF

02:00pm

1002 Electrical & Computer Eng Bldg

Labs

Grad TAs for labs are in bold.

Regular sections

Section

Day

Time

Location

TA

CA

AYT

Wed

05:00pm

Siebel 0218

AYB

Wed

07:00pm

Siebel 0224

—

—

—

—

—

—

AYC

Thu

09:00am

Siebel 0224

AYD

Thu

11:00am

Siebel 0224

AYE

Thu

01:00pm

Siebel 0224

AYF

Thu

03:00pm

Siebel 0224

AYG

Thu

05:00pm

Siebel 0224

AYH

Thu

07:00pm

Siebel 0224

—

—

—

—

—

—

AYQ

Fri

09:00am

Siebel 0218

AYI

Fri

09:00am

Siebel 0224

AYJ

Fri

11:00am

Siebel 0224

AYS

Fri

01:00pm

Siebel 0218

AYK

Fri

01:00pm

Siebel 0224

AYL

Fri

03:00pm

Siebel 0224

Laptop sections

A laptop is required at these sections.

Section

Day

Time

Location

TA

CA

AYM

Wed

05:00pm

Siebel 1304

AYR

Wed

07:00pm

Siebel 1304

—

—

—

—

—

—

AYN

Thu

01:00pm

Siebel 1302

AYO

Thu

03:00pm

Siebel 1302

AYP

Thu

05:00pm

Siebel 1302

—

—

—

—

—

—

AYQ

Fri

01:00pm

Siebel 1214

AYR

Fri

03:00pm

Siebel 1214

Office Hours

Please see the Calendar for our Open-Lab and
Pen-N-Paper (PNP) office hours.

Office hours are held in the basement of Siebel. To add yourself to the office
hours queue, go to Chara. Make sure to include which room
you are in so the TA on duty can find you.

Course Theme

This course teaches a variety of ways to store collections of data in a
computer program and discusses the advantages and disadvantages associated with
the different methods. You will learn how to build various data-storage
structures, and you’ll discover why you might prefer one over another in a
particular situation. The combined arts of design, analysis and justification
are the substance of the class.

The first 3–4 weeks of the course will be a crash-course in some C++. We will
cover many of the major ideas of the language, and you will have had a great
deal of practice with its features by the end of
the semester. Our focus will be on those features that introduce computing concepts
that may be new to you - most prominently, generic programming, object-oriented
programming, and manual memory management.

While this is not a C++ course, keeping up with the class during the C++
portion will be important to your success later on, where the focus will shift
from how to do things in C++ to what to do. In order to communicate these
ideas for MPs and exams, you’ll need to be familiar with C++. Also, the first
assessments will cover primarily C++ topics. That said, knowing C++ alone is not
sufficient to do well in CS 225 - if you’re already familiar with C++, we
encourage you to learn ahead and make sure you follow along with the data
structure discussion later.

C++ reference

A more tutorial-based approach is available at http://www.learncpp.com/. This
spends more time teaching, rather than acting solely as a reference.

If you like physical books, Ira Pohl’s C++
Distilled
is a good option. (Don’t be put off by its age! In this case it just means it
doesn’t cost a fortune. yay!).

You are welcome to use any alternative references you prefer.

Communication

Course Website

All course announcements, including MP extensions, will be announced on the
front page of the course website. Please plan to check this
page often.

Piazza

The most important forum for communicating in this class is the course’s
Piazza site. Piazza is like a newsgroup or forum — you are encouraged to use
it to ask questions, request clarifications, express opinions, give advice. We
will give you enrollment instructions at the first lab meeting (it’s not hard).
The Piazza site for this class is: https://piazza.com/illinois/spring2018/cs225 . You are
welcome to sign up, and you can do so directly if you use your @illinois.edu
email address. Doing so exposes you to the possibility of limited promotional
material from Piazza, but you WILL be able to maintain your privacy within the
system by posting private messages. If you are concerned about privacy, and you
do not want to use your @illinois.edu account, send
Wade an alternative account and we’ll prompt
Piazza to send you an invitation.

We expect that you will be courteous and post only material that is somehow
related to cs225 (however slightly). The posts will be lightly moderated.

Piazza will be a great place to post most questions regarding assignments -
both the course staff and other students are allowed to answer your questions.
Please try to avoid asking questions that have already been asked and
answered. Also, do not post code!!! Finally, try to avoid emailing the
instructor or TAs if your question can be posted to Piazza.

Note that private posts to Piazza can be used for things like conflict
requests, or for letting us know that you have that sinking feeling—anything
you don’t really want to share with our small community of 800 learners.

Grading

All daily, lab, MP, and exam scores will be published to your repository.

Point breakdown

Category

Contribution

Notes

Programming Assignments

290 points

20 points for MP1; 45 points for the rest of the MPs

Laboratory Assignments

100 points

10 points each

“Exam 0”

40 points

Theory Exams

210 points

70 points each

Programming Exams

210 points

70 points each

Final Exam

150 points

Usual cutoffs

Points

Minimum Grade

[900, 1000]

A-

[800, 900)

B-

[700, 800)

C-

[600, 700)

D

[0, 600)

F

We might lower these cutoffs; for example, perhaps 670 points will turn out to
be enough for a C-; however, we won’t raise them. (In recent semesters these
cutoffs have not moved significantly from these targets.)

We do not assign letter grades for individual scores. We also do not ever curve
individual exam or assignment scores. If an exam or assignment should turn out
to be significantly harder than we meant it to be, we would announce a lowering
of the expected cutoffs above for the various letter grades, in effect lowering
the percentage needed for a grade and curving the grades.

Extra credit

There is an opportunity for significant extra credit in this course. Points for
extra credit work will be assigned after grade cutoffs are determined, so they
are a true bonus to your score. The total amount of extra credit you can earn is
capped at 100 points, or one letter grade.

MP extra credit via early submission

All MPs except MP1 are broken into two parts. The first part can be submitted
early for up to +7 extra credit points. The result of consistent
early submission is +42 points toward your final course score, or
nearly half a letter grade.

Partial extra credit is available; if you score an 80% on an early submission,
you will get 80% of the extra credit weight extra credit. (eg: +7 * 80% = +5.6)

Lab extra credit

Your overall lab score is computed out of a maximum of 100 points; anything you earn
above 100 points is counted as extra credit.

Problems of the Day (POTD)

Beginning in approximately a week and continuing every weekday
through the end of the semester we will give you a small
programming problem to download, solve, and upload. These exercises are designed to
mimic the environment and scope of coding problems you will see on midterms. They
will be distributed and collected via PrairieLearn. Each POTD is worth +1 extra credit
point, to a maximum of +40 points.

MPs and Labs

Machine Problems

There will be 7 machine problems (MPs). They are of increasing difficulty and
sophistication, and we consider them to be the meat and cheese of the course.

The MPs you will be doing in this class will serve many purposes:

They are designed to give you substantial practice with the C++ syntax you
learn in class.

They are an exercise in the software development cycle.

They are an exercise in attention to detail, as there is not much partial
credit given on the MPs.

They are an exercise learning to use the tools available to you to help you
work more efficiently and to check the quality of your work.

You are given approximately two weeks for each MP (after MP1, which is just 1
week). Exact MP due dates will be announced in lecture and on the MP
specification page.

Lab Meetings

There will be approximately 14 lab sections during the semester, each of which
consists of a small intro and a lab exercise.
See the top of this page for meeting times
and locations. Lively discussion and collaboration with course staff and fellow
students during the 2 hour labs should usually (but not always) result in
significant progress toward finishing the exercise.

The purpose of labs is to help improve your programming abilities and reinforce
concepts taught in lecture. Exact lab formats may change week-to-week, but a
usual lab will consist of about 20 minutes of
discussion over the material covered in lecture and about 90 minutes of
collaborative coding.

Lab sections are each worth 10 points each.

Lab assignments will be released for all students before 7pm on Wednesday, and
will be due the following Sunday at 11:59pm.

Machines and EWS

Your MP and lab solutions MUST compile and execute on the EWS Linux
machines (the Linux computers present
in Siebel basement labs and other College of Engineering buildings). If you are
a student in the College of Engineering, you automatically have an account on
those machines. Just use your NetID and AD password to get in. If you discover
that you do not have an account on the EWS machines, first try resetting your
AD password, and if that doesn’t work, then
post a private message to Piazza and we’ll help you take care of it.

You are welcome to log in to the EWS machines remotely. Instructions are
available from the Resources page. However, we invite you to get
out of your room and join your classmates and course staff in 0224 Siebel :-) .
Open lab office hours can be seen on the Calendar page.

Distribution and Hand-in

Each of you has been given space in the CS 225 SVN repository. Code for each of
the MPs will be distributed there for you to check out. Simultaneously, the MP
writeup will go live on the course web site. The writeup will contain all
specifications you need for the assignment, including due dates and submission
instructions. All submissions will be taken from the SVN repository at the MP
deadline, so you should commit appropriately.

We are very strict about the deadline, and no late assignment will be
accepted.