This collection of links represents the policies of CS125. You are responsible for knowing all the information we present here. We will bring this page to your attention on the first day of class. After that, we will assume you have read through this information and are familiar with it, and thus "I didn't know" will not be permitted as an excuse for the rest of the semester.
You don't have to memorize it, it's always available here for you to read through—but you should at least read through it once at the start of the semester so that you are familiar with what information is available here. That way, if you need to know it later on (for example: "Hmmm, I am sick, and yet I have a CS 125 quiz scheduled today. What is the CS 125 illness policy?"), you at least remember that it's here for you to read through, even if you don't remember exactly what it says until you actually read through it again.
This course serves as an introduction to computer science for computer science majors and other people with a strong interest in the discipline of computer science. Being a computer science course, rather than a programming course, the course will focus more on broad theoretical concepts than on language syntax. Certainly, you will learn how to program in this course, and you will learn a lot of the core syntax of Java. But programming is only part of the discipline of computer science, and a decent portion of the work you do will be design work—the design of the logic flow for a program, the design of algorithms—which can be done just as well on paper as in an actual program. The programming assignments will serve as the "application" part of the course, where you learn to integrate the theoretical design ideas and skills you are learning, with the process of compilation, debugging, testing, documentation, and the need to get things exactly correct.
We will be covering fundamental ideas behind Java applications, software development, and algorithms—ideas such as composition and abstraction, control flow, data storage, recursion, and performance analysis. With those fundamentals in hand, adapting to the constantly changing implementations and uses of those fundamental ideas becomes a straightforward task. Throughout your time in the computer science department, you will see a similar emphasis on the fundamental ideas which are constant among all the technology and tools in a particular category.
A summary of the Course syllabus is here
This course meets the campus General Education requirement for Quantitative Reasoning I.
This course has no prerequisites! Specifically, you do not need prior programming experience in order to succeed in this course. Certainly, people who have programmed before will find the course easier; however, any course is easier if you have already learned some of the material previously, so that's not a quality unique to CS125.
That said, the course is designed to be very challenging, so you should expect to have to work hard and learn a lot of material quickly. The fact that some students in the course won't have to work as hard (because they've seen some of the early material before) should not discourage you—your grade is based only on your work, not on how your work compares to that of other students.
Attendance policy: Attendance is required for all lectures and all discussion sections. Part of your grade will be based on class participation.
If you miss a lecture, see the instructor and you'll also need to catch up on the material by visiting office hours. If you miss your section, you should inform your TA prior to your section and go to one later in the week. You may also use office hours to catch up (though section points etc will not be available).
Lecture and section handouts are posted in subversion. Lab instructions are also available.
CS125 students are responsible for daily reading of their U of I email.
the course forum is the primary means of discussing course content.
Short course announcements will generally be made in lecture and on the front page of course website.
The course forum is the proper place for you to post most questions regarding assignments. Both the course staff and other students are allowed to answer your questions. Since you can work on some assignments together, we encourage the use of the forum as an area of collaboration. However, please do read the recent posts that other students have made—plus our remarks on the announce group—before you post a new question. There's a chance that the question you are asking has already been asked and answered, and we do not need to have many copies of the same question on the forum. Consider the existing posts to be just as much of a resource as the notes are; ask a question only if it does not already appear among the existing posts. Also, please avoid posting code to the forum—that goes beyond helping someone out and instead results in you giving most of your solution to everyone else in the course. "Collaboration" of that extent is not useful for anyone, since people do need to learn the material themselves or they'll never pass the quizzes. Very small snippets of code (a line, maybe two) are permissible in order to get assistance with a syntax error, for example.
Please avoid emailing the instructor or TAs if your question can be posted to the course forum. Obviously, there will be some questions that must be dealt with through private e-mail because they are more individual concerns that are not of interest to the class. Most of these should be a "private" post to the course forum to the instructor or administrator of the course. If a question can be posted to the forum, then that is where it belongs. Firstly, many students can benefit from the answer. Scondly, if this policy is not followed, we get swamped with email and are not able to help anyone efficiently. One post of ours in response to a posted question can answer a question many separate students may have had, so clearly we'd prefer to answer it only once on forum, rather than many separate times over email.
The recommended text for this course is here. Many chapters of this textbook are assigned as pre-lecture readings.
You will learn much about programming and computer science by working on the machine problems. These are worth 15% of your grade. The quiz and final exam questions are also heavily based on what you learn by working on the MP.
The term "MP" is short for "Machine Problem"—a phrase traditionally used at UIUC for a computer-related assignment. The MPs are hard but worthwhile. They will ensure that you really know and understand how to use the material.
MPs will be assigned every couple of weeks in this course. These assignments are the meat and cheese of any programming based computer science course. MPs will challenge your understanding of the material being taught in lectures. MPs are also worth a significant portion of your grade in the course, both directly, and indirectly via related problems on quizzes and the final exam, and thus should take up a significant portion of your time invested in this class. Please give yourself a good amount of time to solve these assignments as they are not designed to be completed overnight. Also, please make a solid attempt at solving the MPs on your own before you go to a TA/CA for help. Trial and error is part of the learning process for these assignments. However, if you do need guidance, please see a TA or CA during office hours or discussion section for help. Please do not cheat on these MPs. You will only be cheating yourself because the material from these MPs will reflect heavily on the quizzes and final exam. (Also, we have algorithms to check for cheating.) All subpages pertaining to individual MPs with explanations and clarifications will be available through the "MPs" menu item.
The MPs you will be doing in this class will serve many purposes:
MPs are an exercise in "getting it right." With practice problems such as assignments in Turing's Craft, you may be tempted to say "I was close!" when comparing your answer to the correct one. But for the MPs, you will need to get things working correctly to get any credit. It's important to have some experience with a "little to no partial credit" situation, since many of your later, harder courses will similarly involve assignments where if you don't have every detail correct, the assignment simply won't work. Learning attention to detail and seeing the assignment through to its correct completion is an important part of working on the MPs.
Therefore, while the quizzes and exam test your understanding of the concepts taught in this course, and while the practice problems and MPs can help you practice those concepts, there is a "professional practice" component that only working through the MPs can help you experience.
Out of fairness to the other students, the deadlines are not flexible. If an MP is due at 5pm, then anything you hand in after 5pm will be considered late. You cannot "fix your last error" twenty minutes after the due time, and then hand the MP in for full credit because "it was only a small error." There are plenty of other people who will have small errors and they would have liked that extra twenty minutes of time as well. Likewise, your assignment will have to be readable and functioning on the official course machines on our network at the due time, and handed in correctly using our hand in program. If you have any problems when using something other than the official course software on the official course machines in the official course labs—for example, if you work remotely and your own machine at the dorm crashes before you can send in your assignment—it's not our problem and you should not expect an extension. We have no convenient way of verifying the problems you claim, and even if we did, we are not about to travel to everyone's home each week, verifying each student's individual computer excuse! You are more than welcome to work from your dorm or anywhere else; however, you assume full risk for any work you do outside of our supported computing environment (i.e. outside the official software, machines, and labs). This means that working up until the very last minute is a poor idea, because if something goes wrong (such as your dorm computer crashing), you are out of luck. Leave yourself time to deal with any unexpected problems!
Certainly, there are special situations which need to be dealt with on a case-by-case basis. But any question along the lines of, "I've been really busy this week and could use a bit more time on this assignment for full credit; is that okay?" is certain to be answered with a "no," so don't even ask.
Late regrades are offered throughout the semester, at the instructor's discretion. These regrades incur a penalty—they are typically offered out of 75% of the maximum points. For example, if you subsequently completed 80% of the MP after the deadline, you would score .75 * .80 = 60%. Your course score for each MP is the maximum of all scores you earn.
This late policy is specifically intended to spare you the full effect of an unfortunate mistake. Meaning, if you are trying to hand in on time, but some unfortunate occurence—oversleeping, your clock being set 10 minutes later than the system clock, a bus taking longer than you expected to get you to the lab, your home machine crashes, etc.—delays you a little bit, you are still able to get most of the credit for the MP.
You are allowed to discuss the machine problems with your friends. A collaborative environment is good for learning, and especially if you and your friends are new to the material, helping each other when you get stuck can benefit all of you. However, you may not email or share your code by any electronic/digital or paper means with other students. You are required to type in your own work using Eclipse editor. You may not copy another student's files or work by any digital or traditional methods. There is one sharing exception—you may post short non-working code snippets to the course forum to get help. You may look over your friend's shoulder to see how they figured it out; however, you must still type in all of your own code. UIUC students that are not officially enrolled that submit graded course items (for examples quizzes, programming assignments) will be held to the same standards of academic integrity as students registered from the beginning of the semester. Do not allow unauthorized access to your graded course work after the course ends.
A few words of warning:
A better way to collaborate would be to do as much on your own as you can, and to talk with others when you get stuck. Note that the course forum serves a similar purpose—it allows you to talk with other students (and the instructional staff) about problems you are having with the machine problems (as well as the practice problems and the course material in general). Discussion and asking questions is always a good thing, but using those things as a crutch and not learning the material yourself is a bad thing. So, your goal should always be to do as much on your own as you can, and to ask for hints in the right direction when you are completely stuck. This approach can take a bit longer than simply "asking someone for the answer," but on the other hand, struggling through your own mistakes until you finally solve the problem will teach you the material far better than someone simply telling you the solution.
If the hand-in mechanism (subversion) is unavailable or not working correctly, please email your Java files to email@example.com. This provides sufficient evidence that you completed the assignment on time. In all other circumstances, please use the standard hand-in mechanism (subversion).
If you are getting a 1/100 on the autograders, then it is because your program failed to compile on our test server. Even though you are getting 100 on your local JUnit test, you will receive a 1 if we can't compile your code. These compilation issues can happen for a number of reasons (JRE mismatch, external class import, etc.). The easiest way to avoid receiving a 1 on your autograders is to make sure your code compiles and runs correctly on the lab machines (without importing), and then commit.
Quizzes are given during weekly meetings.
Quizzes in this course are NOT easy. The questions consist, by and large, of writing code, understanding code and theoretical questions. Weekly quiz content may include all material covered in the class to date, with an emphasis on the content covered in the preceding week. Your average quiz score will determine about half of your final grade.
Our assumption for the quizzes (and the final exam) is that you have a good understanding of the material directly covered in the readings, machine problems and in class, and the quizzes test how well you can apply what you've learned to new problems. For example, questions dealing with Java syntax will not ask you about individual lines of code; rather, you'll be writing entire chunks of code demonstrating your knowledge of how to apply the tools you are learning to new problems.
As a result, you should not be trying to "memorize stuff from lecture" two hours before the quiz or final exam. In this course, we're going to be asking you to apply what you have learned. If you've just crammed it in your head a few hours before the exam, you probably don't understand it well enough to use it in the ways you'll need to do on the quiz. In other words, this is a course where the best approach really is to keep up with the material and clarify confusion as soon as possible.
If you fail to schedule or take a quiz in the alotted time, you will be assigned the following grade for that quiz at the end of the term:
If your absence is unplanned—if you have a sudden illness or have a sudden death in the family—we will deal with your situation on a case-by-case basis.
For illness-related excuses, you will need a doctor's note of some kind verifying your illness. NO illness-related excuses will be accepted without a dated Emergency Dean's note stating that you contacted the Emergency Dean.
Ideally, if you are sick, you will have time to visit a doctor or the McKinley Health Center before the quiz. If your illness begins closer to quiz time, however, you might not have that opportunity (McKinley might be closed, for example). We therefore urge you to keep the phone number for the Emergency Dean handy, so that at the last minute, you can contact immediately.
Once the quizzes are taken, the TAs grade the quizzes. We do not split a question among multiple TAs; for any given exam question, the same TA will grade that question on every exam. This helps maintain grading consistency—if you lose points for a mistake, you can reasonably expect that anyone else who made the same mistake lost the same number of points, since it's the same TA making the decision in all cases.
Please see the Quiz page to learn how your quiz scores are averaged and used in determining 50% of your final grade..
If you feel an exam question has been graded incorrectly, you can request a regrade of that question by writing out an explanation of why you think the question should be looked at again, and handing that explanation and your exam back to the TAs. The TA who graded that question will then consider your regrade request.
If a student discusses the question and the grading with the TA who graded the question, and still feels the grading was unfair, then the regrade request can be forwarded up to the instructor for a final decision. This happens very rarely, and though the instructor will indeed give appropriate consideration to any such request, the situations where the instructor overrules the grading of the TA are even more rare. Certainly, requests along the lines of "I was given 3/10 but deserve 4/10 instead" are considered to be the decision of the TA who created the grading scheme and did the grading for that question, and the instructor doesn't overrule the TA's grading in such situations.
Regrade requests must be made during the class that you receive your exam back. You may not ask for a regrade request to a specific question if you have added to, modified or erased your response in any way. Any modifications will be considered fabrication.
Generally, quizzes take about a week to grade, since the quizzes are primarily coding quizzes and it takes a while to work through every single person's code for a given problem.
When the quizzes are completely graded, the scores will be available in the Compass Gradebook.
Cheating on a quiz, MP, or final exam will be dealt in accordance with University policies.
MP scores are automatically posted in subversion as part of the grading process; scores are not immediately posted to Compass.
We will use the campus's Compass gradebook to store your grades.
The weighting scheme for the final grade will be:
To pass, you must attempt all MPs and other required items, including team project.
We would like every student to have a reasonable chance at an A, and so final grades in this class are not determined by your class rank—i.e., you are not competing with other students for a limited number of A's, or B's, or C's. Instead, we assign grades on a final score percentage basis:
|If you scored||You earned at least|
The final exam is a large-enough portion of your total grade, that obsessing halfway through the semester over whether you have a "B" or a "B+" is rather pointless. Instead, focus your attention on learning the material as well as you can, with the above three cutoffs available to give you a general sense of how well you are doing. In the end, your letter grade will reflect how well you learned the material. Please don't ask us questions like "Well, what do I need for a B+?" because we don't have answers to those questions until we assign final grades at the end of the course. If you're worried halfway through the semester about whether you have a B or instead a B+, then you're missing the point.
We do not assign letter grades for individual scores.
We also do not ever curve individual quiz or assignment scores. If a quiz or assignment should turn out to be significantly harder than we meant it to be, we would announce a lowering of the expected cutoffs for the various letter grades. That way, since you need a lower percent to obtain your desired grade, it compensates for the fact that everyone got a lower percent than we expected on the quiz or assignment.