Home & Syllabus
*** This is from Fall '18, not the current semester! ***
Welcome to CS 141, Programming Design II, Fall 2018
(Lecture 10am: 34657, 1pm: 42636, 3pm: 42032. Labs Tues: 9am:34781, 10am:42643, 11am:42644, 12pm:34782, 1pm:36901, 2pm:42645, 3pm:42646, 4pm:38094. Wed: 8am:42215, 9am:42216)
The course syllabus is shown below. The Notes & Reference link shown in the navigation bar at left includes C Libraries, ASCII table, precedence in C, SSH, and Examples of Code
Syllabus
There are two lecture sections for the course. You must attend the section for which you are registered. (See campus map)
M W F 10:00 - 10:50 in LC C4
M W F 1:00 - 1:50 in LC C4
M W F 3:00 - 3:50 in LC D4
Labs are in SEL 2254 on Tues starting at 9, 10, 11, 12, 1, 2, 3, and 4, and also on Wed at 8 and 9. We do have lab the first week of class! You must attend the lab for which you are registered.
General Information
See advice from previous students here. No need to login, and posts can be anonymous. (See the advice from older previous students here.)
See UIC course grade distributions from previous semesters. (See the Data tab, then Student Data, then Grade Distribution, to take you into the application.)
Instructor:
Office:
Phone:
email:
On the Web:
Office Hours:
Prerequisites:
You Need:
Reed.
SEO 917
(312) 413-9478
See above web page
CS 111 & credit/concurrent registration in MATH 180.
If you have not taken CS 111 at UIC (or 107 or 109) or the equivalent somewhere else, the CS 111 proficiency exam is administered through UIC testing services. Newly admitted CS students will automatically have the option to take this exam along with other placement exams that are required and optional. Permission to take this exam is given only to recently admitted CS students and approved CS minors. Continuing CS and non-CS students can request to take the exam through your my.uic.edu account, and will be approved on a case-by-case basis.
A subscription to an online textbook from Zyante.com.
Follow these steps:
Sign in or create an account at learn.zybooks.com
Enter zyBook code:
UICCS141ReedFall2018
Subscribe. A subscription is $63 and will last until Dec 28, 2018.
The syllabus includes chapters and deadlines for the zyBook exercises that should be done interactively as you read. These count as part of your grade.
If the idea of a course without a traditional book leaves you feeling uneasy, check out the online Safari books available for free to UIC students. You may also want to look at the Lynda video lectures on C++ Programming listed on the course Blackboard site.
We will be using iClickers for our classroom response system. These can be purchased at the bookstore or online. Older versions are fine, though you may not use a computer/tablet/phone version because of latency issues. Please register your iClicker on Blackboard. We will use clickers starting the first class.
You should have gotten an email invitation to join Piazza, the online discussion board we will be using for this class. Otherwise sign yourself up here. Piazza is specifically designed to get you help quickly and efficiently from classmates, the TA, and me. Do not email questions to us, rather post your questions on Piazza. Our class Piazza page can be found using the link in the navigation bar above left. Your posts can be anonymous to your classmates, though we can see who posted each message.
Accounts to create your programs:
We will be using codio.com this semester to write our programs and do lab activities. This is a system that runs through your browser in the cloud, so the experience should be the same for Mac, PC and Linux users. Signup by following the link posted on Piazza. The resulting page will invite you to enter your uic email address.
We will use GradeScope to grade exams. If you are not already added through our synchronization with Blackboard, you may add your self using this Gradescope code: 9WV77R
Course Grading Criteria
30% Programs (probably 6 of them, 5 points each)
10% Zyante Exercises (We have access to portions completed, so no turn in is necessary after completing problems.)
5% Lab Quizzes (Most likely through Codio)
5% Lab Activities (Must be done in-person in lab through Codio)
5% In-class iClicker question responses.
10% Midterm Exam #1, both in-lab and in-class portions
15% Midterm Exam #2, both in-lab and in-class portions
20% Final Exam, both in-lab and in-class portions
=====
100% Total
Letter grades are assigned on a curve at the end of the semester. The way the curve in this class historically usually works, the most you will likely be able to get is a "C" in the course if you turn in only 3 programs. If your grade is right on the borderline of the next highest grade, I will consider whether or not you were a "good citizen" on the discussion board.
Quizzes will be given during during the first few minutes of lab, and will be closely based on the exercises from the textbook assigned readings. No makeup quizzes will be given, but the lowest quiz grade will be dropped. Lab exercises will be assigned during lab and must be completed in person during that lab session. Labs are graded on a 3 point scale (0: didn't do it, 1: some effort, 2: average, 3: extra credit). The lowest lab grade will be dropped. Zyante exercises are available on the web and must be completed before class on the posted deadlines. Only on-time submissions will count towards your grade for lab activities, quizzes, and Zyante exercises. In-class and in-lab quizzes may be given right at the beginning of class, so be prompt!
Some of you may not want to attend class, or may not want to attend lab. At the end of the semester your overall (in-lab + in-class) final exam score percentage will count instead of your clickers average if it is higher than your clickers average. This will also be true for your lab quiz and lab activity scores. This means that if you skip class and skip lab, your final exam will count an additional 15% of your grade.
Program Grading Criteria
Programs must be submitted by the deadline inside Codio to be considered as on-time.
Late programs will be accepted within a week after the original program deadline, and will have a 30 point (out of 100 points) deduction. In addition you will need to turn in a 500-word essay comparing your solution to my posted solution, referring to specific differences and commenting on which is better and why. Failure to include this paper will result in an additional 10 point deduction. Your late submission can use parts of my solution, however you will be graded on the extent to which you did your own implementation. In other words, turning in exactly my program would be a 0/70, turning in 50% of my program would be a 35/70, and turning in all your own code could give you a maximum of 70/70.
Do not turn in both on time and late versions of your programs. If you do, you will be given the lowest score between the two of them. Late programs are not eligible for any extra credit points.
C++ programs must run correctly in Codio to receive full points.
Partial credit will be given only on programs that do compile and run substantially according to program requirements (i.e. not just "Hello World" or simple input and output). This is important: You will not be graded on the effort you put into a program, but rather on the final result.
Each program will be graded out of 100 points as follows. Note that some of the criteria do not apply to early programs (e.g. functional decomposition) since we will not have learned those topics yet.
55%
45%
100
Runs correctly: conforms to assignment description for input and output, follows instructions given. Make sure to test your program thoroughly.
Programming style, further broken down as follows:
(Why the detailed coding standards? If these seem too explicit, take a look at the Indian Hill (AT&T) version or the Google version.)
Total Points
Each program should include a descriptive header at the top of the first page which must have at least as much information as the following, though the rubric may change from one program to another:
/* -----------------------------------------------------------
Basic Calculator with + - / *
Class: CS 141, Fall 2017. Tues 5pm lab
System: Windows 7, Qt Creator
Author: Dale Reed
45 points Grading Rubric for Programming Style
10 Meaningful identifier names
10 Comments: Has header. Comments on each block of code
10 Functional Decomposition
10 Appropriate data and control structures
5 Code Layout: Appropriate indentation and blank lines
Extra Credit (usually up to +10)
Did not follow naming convention (usually -5)
Late penalty (usually -30)
-----------------------------------------------------------
*/
Pair Programming
You may (but don't have to) program with a partner on one or both of programs 3 and 4, but must work on programs 1, 2, 5 and 6 on your own. For pair programming you must choose a partner ahead of time, registering yourself and your partner using the partner registration form at least one week before the program is due. When programming with a partner you must take turns being the "designated driver" and the "non-driver." To do this you must also both read the article by Williams and Kessler entitled "All I Need to Know about Pair Programming I Learned in Kindergarten."When doing pair programming, you must both submit the same program solution, with both of your names on them.
Consider using a tool such as Google Docs or TeamViewer to allow you both to view and edit code as you are developing together. TeamViewer is free for individual use (as of the time of this writing) and allows you to collaborate remotely. You could use Google hangouts or Skype for video conferencing, and TeamViewer for writing code together.
Course Notes
See the Notes link on the course web page menu for pdf copies of class notes. Videos of class sessions will be available online through Blackboard in semesters where this course is taught in one of the UICast classrooms.
Joining Class Late, Missing Class
For students who register for the class after the first day but still within the first two weeks of class, you must send the instructors a private post on Piazza, indicating the day you registered for the class, your class section, lab section, and your UIN. Be sure to select the late_registration tag for your post so we can find it in the future. If you have done this, then at the end of the semester if the missing points make a difference in your final grade, then we will revisit your missing lab and Zyante scores. You will not be eligible for any missed clicker points.
If you miss class because of a religious holiday, jury duty, UIC sports team event or verified sickness (we may contact your doctor) then please send the instructors a private post on Piazza and be sure to select the missing_class folder for your post.
Labs
Instructional labs are generally held once a week, for 50 minutes. For midterms and for the final exam the instructional lab time is used for the hands-on component of the test. On non-test days the basic structure of each lab is:
~5 minute quiz using Blackboard in the Quiz section (or using a Google form). Quiz links are only available at the beginning of lab, so if you arrive late you likely will miss it. You must be present to take a quiz, as the quiz password will be written on the board.
~5 minute overview of the tasks of the lab activity for the day.
~ 40 minutes to work on the lab tasks. You must work with a partner to get credit for the lab. The two of you will complete and finish a single project.
In lab every 10 minutes or so we will make an announcement for you to switch driver / navigator roles, which means you alternate being the person typing on the keyboard. During the last 10 minutes of the lab the TA(s) will come around to verify your work and check off what you have done.
TAs will give you guidance when you ask a question, but will not necessarily give away the answer. Remember to "ask three before me". If you don't understand something, first confer with your partner. If you still can't get it confer with two other students in a nearby group. If you still can't get it then get help from a TA.
How to Succeed in this Class
My job in class is to organize the material coherently, give helpful lectures, provide a framework that combines enough challenge and support for success, and grade reasonably. For you to succeed my expectation is that you will do the following. Note that a reasonable academic expectation is that you spend 2 hours outside of class for every hour spent in class. For a few of your programming assignments you may go over this time estimate.
Come to every class, unless you already understand the material very well and have no questions, and can afford to lose the 5% possible points for in-class clicker use.
Go through the on-line book chapters. If you are having difficulty go through it twice. This gives you the preparation to succeed on the lab quizzes. Read the chapters before we discuss them so that you can ask informed questions.
Attend labs, taking quizzes and doing the exercises. If you already have many programming skills, then pair up with someone who needs the help. You will discover new insights when you have to explain things.
Write the programs, working on them ahead of time and not at the last minute. This allows you to get help from the teacher and from TAs if you need it.
See the teacher and/or TA when you don't understand something and have spent a reasonable time working on it yourself first.
Logistical Details
All critical announcements, changes to assignments, etc. will be announced through Piazza. I'm assuming you will check your email regularly.
You will be given the opportunity to take a make-up exam only in cases of medical or personal emergencies, which must be verified. If such an emergency occurs, post into the appropriate category in Piazza as soon as possible.
You are responsible for all information (handouts, announcements, notes, etc.) covered during class. You should look at any online copies of notes and ask fellow classmates for missed information, not the instructor or the T.A.
No grades of "Incomplete" will be given for poor performance in the course. An incomplete can only be given if there are extenuating circumstances and you have at least a 'C' average in the course. No extra work or extra credit will be given.
If you feel that you deserve more points than you have been given on a quiz, assignment, or test, you must see the instructor about this within one week of the time the work in question is first returned to the class. After this deadline, no claims will be considered, justifiable or not.
Academic Dishonesty
Any student caught cheating on an exam or program will get a grade of 0 on that assignment and will be dropped a letter grade at the end of the semester. In addition they will be reported to the university and handled according to the Student Disciplinary Policy. The same penalty applies if you use someone else's clicker when they are not physically in the classroom. If you work on a program with a partner (pair programming), but have not notified both the TA's and me by email at least one week ahead of time, then this will be considered academic dishonesty as well.
When writing programs, you may consult with me or the TA at any stage of your program development. It helps if you bring a current print-out or have a copy available online. You may seek help about the system or the editor from anyone at any time.
To avoid cheating via collaboration, do not show any other classmates your code, and certainly don't send anyone an electronic copy, even of a draft of your program. If a classmate consults you for help after attempting to run his or her program, you may assist in determining why her or his code doesn't work, but don't write it for them based on your own code. Do not lead your classmates into temptation: guard your print-outs. We use an automatic cheating-verification program that is capable of detecting partial logical similarities. Don't even take the risk. In a recent class 10% of the students failed due to our system picking up program similarities. In recent semesters students have been caught for hiring programmers online and for copying online code. If you can find it online, so can we. If your program is detected as similar to another, and you then tell me "Oh, we worked on it together," but you did not 1. Turn in a single copy with both your names on it, AND 2. You did not notify me at least one week ahead of time, then you will be subject to the academic dishonesty penalty.
You may not get help of any kind from anyone else for any part of the midterm and final exams. These exams must be exclusively your own work.
Other
Please also refer as needed to the UIC academic calendar, campus disability services policy, all of which apply to students in this class. I make an effort to avoid having tests on religious holidays, but if I neglect to take one into account, please let me know. If you will be missing class because of a religious holiday then please enter your information on the following form to help me keep track of this: https://goo.gl/forms/KV6Ar0AL3Mjt6E2Y2. If you have special circumstances such as a letter of accommodation (LOA) from the UIC Disability office, then before each exam please remind me using bit.ly/uicloa