2016 Fall Semester
CS 1110 (Section 001) - Mondays, Wednesdays, and Fridays, 3:00-3:50 pm w/ Prof. Mark Sherriff - Wilson 402
CS 1110 (Section 002) - Mondays, Wednesdays, and Fridays, 11:00-11:50 pm w/ Prof. Ahmed Ibrahim - Rice 130
CS 1111 - Mondays and Wednesdays, 2:00-3:15 pm w/ Prof. Upsorn Praphamontripong - MEC 205
Labs meet 101-108 meet in OLS 001; Lab 109 meets in Rice 120
Lab 102 - Th 9:30-10:45 AM - TAs: Caroline McNichols, Monique Mezher, Maria Schweitzer
Lab 103 - Th 11:00 AM-12:15 PM - TAs: Marco Gomez-Wong, Jack Nugent, Alyssa Porto
Lab 101 - Th 12:30-1:45 PM - TAs: Anthony Quach, Stephen Read, Rachel Weaver
Lab 104 - Th 2:00-3:15 PM - TAs: Will Grayeski, Sebastian Lerner, Madeline Watkins
Lab 105 - Th 3:30-4:45 PM - TAs: Laura Maimon, Ajay Patel, Katie Vinson
Lab 106 - Th 5:00-6:15 PM - TAs: Callie Phillips, Kathleen Ross, Summer Thompson
Lab 107 - Th 6:30-7:45 PM - TAs: Kamille Foster, Trad Groover, John Perales
Lab 108 - Th 8:00-9:15 PM - TAs: Matt Aldridge, Patrick Myers, Emily Zhou
Lab 109 - Th 3:30-4:45 PM - TAs: Sahana Arkalgud, Melony Bennis, Claire Veasey
CS 1111 TAs: Justin Barry, Winston Frick, Irena Huang, Abey Koolipurackal, Sophie Mester, Richard Shaw
All office hour times are posted on the course calendar at the bottom of the Schedule page on the course website. TA office hours are held in the Thornton Stacks lab (large lab in the middle of the top floor of the A-wing of Thornton Hall - look for the sign). Professor office hours are held in their respective offices.
Office Hour Queue
If you are attending TA office hours, please sign in on the Office Hour queue web site at https://stardock.cs.virginia.edu/oh upon arrival. Faculty member office hours do not use the Office Hour queue.
Staff Contact Information
Instructor: Prof. Mark Sherriff
Office: Rice 401
Office Hours: See Calendar on Schedule page on course website
Instructor: Prof. Ahmed Ibrahim
Office: Rice 207
Office Hours: See Calendar on Schedule page on course website
Instructor: Prof. Upsorn Praphamontripong
Office: Rice 206
Office Hours: See Calendar on Schedule page on course website
Teaching Assistants: Abey Koolipurackal, Ajay Patel, Alyssa Porto, Anthony Quach, Callie Phillips, Caroline McNichols, Claire Veasey, Emily Zhou, Irena Huang, Jack Nugent, John Perales, Justin Barry, Kamille Foster, Kathleen Ross, Katie Vinson, Laura Maimon, Madeline Watkins, Marco Gomez-Wong, Maria Schweitzer, Matt Aldridge, Melony Bennis, Monique Mezher, Patrick Myers, Rachel Weaver, Richard Shaw, Sahana Arkalgud, Sebastian Lerner, Stephen Read, Summer Thompson, Trad Groover, Will Grayeski, Winston Frick
Message boards: Piazza @ http://piazza.com/class/ir3u8ifzeum562
Login to Piazza and use the threads for quick questions, assignments, and for discussion with other students and staff. You can also post private messages here that will only be seen by staff members. This includes regrade requests for homework assignments.
Starting Out with Python (3rd Edition)
(a.k.a. "the banana slice book")
The text book is not required. We will be following the basic outline and ordering of this book; for students who would like a reference, this is an excellent resource. However, no assignments will be given from this book and it is possible to be successful without the text if you come to class and take good notes.
Note on the 2nd Edition: You should be okay with the 2nd edition, but the chapters and page numbers will be different. It will be up to you to figure out all of the changes.
Automating the Boring Stuff with Python
Available Online for free: https://automatetheboringstuff.com/
Google Education's Python Class
Available Online for free: https://developers.google.com/edu/python/
The Coder's Apprentice
Available Online for free: http://www.spronck.net/pythonbook/
A first course in programming, software development, and computer science. Introduces computing fundamentals and an appreciation for computational thinking. No previous programming experience required. Note: CS 1110, 1111, 1112, 1113, and 1120 provide different approaches to teaching the same core material; students may only receive credit for one of these courses and all count the same toward degree requirements.
In this course, we have two main goals - to teach you the skill of programming and the art of computer science. Engineering in all fields is progressing at a rapid rate and having the ability to write and understand simple programs has become increasingly more important. While you may not be using Python as your language of choice in your field (although you might!), the concepts and principles you pick up in this class will give you the ability to take an algorithm or problem in your chosen field and write a program that will help you do your job quicker, easier, and more reliably.
But the question now is how do you find those algorithms/problems in your field that would be a good candidate for a new program? Or what if you have to derive the algorithm yourself from the problem? Part of the art of computer science is in recognizing what problems are computable and using computational thinking to derive the best way to solve the problem.
It's important to remember that programming and computer science in general isn't an area that only a select few people need - computing is everywhere and in everything. The world needs engineers in aerospace, mechanical, chemical, systems, biomedical, civil, environmental, materials, and electrical that recognize how computing and computational thinking applies to their field to create the next generation of solutions in their respective fields.
- Why Computer Science?
- The Parts of a Program
- Data Types
- Lists and Dictionaries
- Basic and File I/O
- Decision Structures (ifs and loops)
- Writing and Using Functions
- Communication on the Internet
- String Manipulation
- Image Manipulation
You should meet the following requirements to take this class:
- Can attend class regularly.
- Can attend lab regularly.
- For 1110, no previous programming experience is expected.
- For 1111, some previous programming experience is required. (NOTE: We may have a pretest to verify this.)
Program of the Day - 40% - There will be 16 individual programming assignments, each worth 2.5% of your overall grade.
Game Project - 5% - A partner project in which you will build a video game.
Test 1 - 15% - Covering the first third of the course.
Test 2 - 15% - Covering the second third of the course.
Final Exam - 15% - Covering mainly the remainder of the course, with some material from the first two-thirds.
CS 1110 Lab Projects and Quizzes - 10% - Composed of lab attendance, lab assignments, and quizzes.
CS 1111 Activities and Quizzes - 10% - Instead of lab, CS 1111 students will earn these points through extra projects, some in-class graded activities, and in-class participation.
Professionalism Penalty - up to -100% - Excessive missed classes, rude behavior toward instructor or classmates, unauthorized homework assistance, etc can be held against a student when final grades are calculated.
Your final grade will be calculated as follows:
Rounding: By default, grades will not be rounded in this course.
Pass/Fail/Audit: A course average of 65.00 or higher with at least one passing test grade is required for successful completion.
- Faculty Office Hours - We in general have an "open door" policy, in that if our door is open, by all means stop on in and say "hi" or ask a question. If our doors are closed, then we're heads down on some task, on the phone, in a meeting, etc. It's always a good idea to email or call before coming to make sure we're here if it's not office hours.
- If you email, please put 1110/1111 somewhere in the subject. It makes it easier on the staff. And please don’t just reply to an email sent over a month ago. That makes it harder to keep up with your email.
- Please don’t hesitate to contact us if you have any problems, concerns, questions, or issues regarding the course, material, or anything else in the class.
- Many students taking this course have never programmed before and might not know what plagiarism of code looks like.
- Sitting beside another student and doing your homework together such that your code looks identical is considered an honor violation.
- In general, follow these guidelines:
|Using ideas or code from class or textbook||OK|
|Using ideas from a TA or instructor||OK|
|Using the course's development tool's built-in suggestions||OK|
|Using ideas from https://docs.python.org/3/||OK|
|Using code from a TA, instructor, or the textbook||OK, but cite the source|
|Using code from https://docs.python.org/3/||OK, but cite the source|
|Using general ideas from another student, tutor, or website||OK, but cite the source|
|Using code from another student, tutor, or website||Cheating|
Citing is done in a comment or docstring in your code, like this:
# I found the distance formula on http://this.web.site/here # I talked over ideas with my friend Thomas Jefferson (tj1a)
- Homework assignments will not be handed out in class. Everything will be available online.
- Every file should begin with your name and ID in a comment.
- You should cite any ideas you discuss with other students or outside resources. Using any code written by another student, tutor, or website is considered a violation of the honor code.
- See the HW page and the automated grading system page for more information.
- Late policy: Homework (specifically Programs-of-the-Day or POTDs) can be submitted up to 2 days late, with a 10% penalty for each day late. POTDs are not accepted after 2 days past the deadline.
There will be a partner project in this course. Details of the groups are:
- Normal group size is two. Group sizes of three might arise. Expectations will be adjusted to reflect available person power.
- You will remain in the same group for the entire assignment unless you are asked to change.
- You must partner with someone in your own lab section (or within 1111 if that is the case).
- In general, all group members will receive the same grade for graded assignments. However, group members will evaluate their peers and any student who appears to not be contributing may be penalized.
You are expected to work as a member of your group in this course and cooperate with your colleagues. Cooperation means attending group meetings, completing your assignments properly and on time, letting your group know if you will be out of town, responding to e-mail from your group, and so on. If there is a lack of cooperation by any group member, it must be brought to the attention of the instructor as soon as it happens. If the lack of cooperation is serious, the offending group member’s semester grade will be lowered.
- Attendance in lecture is vital to learning the material and making a good grade in this class.
- We make no guarantees as to whether we will or will not take attendance or give a quiz on any given day.
- Any pop assignment we give cannot be made up.
- Attendance in lab, however, is mandatory and it will be checked.
- There will be a total of three formal exams during the course of the semester, counting the final exam.
- The midterm exams will be given in class. The final exam will be given during the university-set time.
- Any exam that is missed due to any absence that is not a University Excused Absence will result in a zero (0) for that grade.
- Any exam that is missed due to a University Excused Absence or due to circumstances that are approved by me beforehand must be made up within a week of the missed test.
Grading Concerns and Appeals
Exam regrades are submitted via the TPEGS tab in Collab (which will also be where you will find out how you did on the exams).
POTD and Lab regrades are submitted on a private post on Piazza, tagged both regrade_request and the lab section in which you are enrolled (e.g. lab107-930).
Both forms of regrade requests are subject to the following policies:
- All regrade requests must be made within one week of the assignment being returned to the student.
- We will regrade serious errors in judgement; we will not regrade partial credit judgement calls.
- When regrading, we reserve the right to regrade the entire exam or assignment, which may result in either an increase or a decrease in your grade. We are not trying to scare off students whose exams or assignments were graded incorrectly, but we are trying to avoid frivolous requests.
- What should be regraded?
- Your answer is the same as what is on the key, but the grader didn’t realize it.
- Your answer is different, but is also correct (code that compiles and runs correctly, but is different than the key).
- What should not be regraded?
- “Most of what I wrote is correct, so I think I deserve more partial credit.”
- “I wrote so much, and the grader didn’t notice that the correct answer is buried somewhere within this long paragraph.”
- “I’m just 1 point away from an A, so I thought it was worth scrounging around to find an extra point somewhere.”
This syllabus is to be considered a reference document that can and will be adjusted through the course of the semester to address changing needs. This syllabus can be changed at any time without notification. It is up to the student to monitor this page for any changes. Final authority on any decision in this course rests with the professor, not with this document.
In this course, there will be a focus on working well together and learning about the development process. A large portion of that process involves interpersonal skills and conflict management. Students and staff are all expected to treat each other with respect. This includes, but certainly is not limited to:
- Excessive web browsing during class
- Disrespectful language
- Promptness for all deadlines and class meetings
- Quality work
Students can and will be penalized for unprofessional behavior.
If a student submits code that he or she did not author (i.e. copied from another student or from the Internet), or if another student submits code that matches your that student, then the student's overall course grade will be dropped significantly.
Your class work might be used for research purposes. For example, we may use anonymized student assignments to design algorithms or build tools to help programmers. Any student who wishes to opt out can contact the instructor or TA to do so after final grades have been issued. This has no impact on your grade in any manner.
The School of Engineering and Applied Science relies upon and cherishes its community of trust. We firmly endorse, uphold, and embrace the University’s Honor principle that students will not lie, cheat, or steal, nor shall they tolerate those who do. We recognize that even one honor infraction can destroy an exemplary reputation that has taken years to build. Acting in a manner consistent with the principles of honor will benefit every member of the community both while enrolled in the Engineering School and in the future.
Students are expected to be familiar with the university honor code, including the section on academic fraud (http://www.virginia.edu/honor/what-is-academic-fraud-2/). Each assignment will describe allowed collaborations, and deviations from these will be considered Honor violations. If you have questions on what is allowable, ask! Unless otherwise noted, exams and individual assignments will be considered pledged that you have neither given nor received help. (Among other things, this means that you are not allowed to describe problems on an exam to a student who has not taken it yet. You are not allowed to show exam papers to another student or view another student’s exam papers while working on an exam.) Send, receiving or otherwise copying electronic files that are part of course assignments are not allowed collaborations (except for those explicitly allowed in assignment instructions).
Assignments or exams where honor infractions or prohibited collaborations occur will receive a zero grade for that entire assignment or exam. Such infractions will also be submitted to the Honor Committee if that is appropriate. Students who have had prohibited collaborations may not be allowed to work with partners on remaining homeworks.
SDAC and Other Special Circumstances
If you have been identified as an SDAC student, please let the Center know you are taking this class. If you suspect you should be an SDAC student, please schedule an appointment with them for an evaluation. We happily and discretely provide the recommended accommodations for those students identified by the SDAC. Please contact us at least one week before an exam so we can make accommodations. Website: http://www.virginia.edu/studenthealth/sdac/sdac.html
If you have other special circumstances (athletics, other university-related activities, etc.) please contact your instructor and/or Head TA as soon as you know these may affect you in class.
Please follow official University channels, including the University website and Twitter feed, for information on official closings. Also check your email regularly. If any given faculty member cannot make it to a lecture, he or she will email the section with instructions. Assume lectures and labs are happening unless an announcement is made.
Frequently Asked Questions
Q: How do I get off the waitlist?
In order to come off the wait list, there has to be an open seat in BOTH the lecture and lab you are signed up for. If one or the other is not true, then SIS moves on to the next student who has the right combination.
Our main cap is the lab. The lab sessions CANNOT go over 46 due to fire marshall limits. A few seats in each lab are held back for a week or so to accommodate very special cases.
Some examples of special cases include:
- Current SEAS 2nd year or higher that has not taken a CS 1 class yet
- Incoming SEAS transfer 2nd year or higher
- Early graduation
If you feel you warrant special consideration and are currently on the waitlist, please fill out the form here: https://goo.gl/forms/UaSWd2HzcOi6a3br2
- Fill out the form above. We have a commitment to get all SEAS students into a CS1 course in the spring semester, but not necessarily the fall, unless you are an upperclassman. If you are a SEAS first year student, you will get in in the spring.
CLAS (and other schools) Students:
- If you are a first year, we're sorry, but you probably won't get the course this semester. You are welcome to stay on the wait list to see what happens.
- If you are thinking about the BA major in CS, you need to take 1110 by your third semester. You still have plenty of time. If this is your third semester or later, fill out the form above.
- If you are in a major that requires CS 1110 (Math, Cog Sci - note NOT Commerce!) and are either a third or fourth year, use the form above.
If you have previous programming experience:
Please consider taking CS 1111! It is meant for people with experience! If you have questions about this version of the course, please talk to one of the instructors.
Consider the other CS1 courses:
We are offering three other CS1 courses this semester: CS 1112 with Prof. Cohoon (for students with no programming experience), CS 1113 with Prof. Ibrahim (for SEAS students that probably won’t major in CS), and CS 1113 with Prof. Sullivan (for CLAS students). All of these are good options to consider and all count the same for prerequisites and major requirements!
We wish we could take everyone that wanted CS 1110 or CS 1111, but it’s simply not feasible with the room sizes and resources we have. Please do try again next semester if you can’t get in this time.
Let us know if you have any questions.
Q: Can I use another edition of the textbook?
A: Since the book is optional, it's totally up to you. The book is there to provide a physical reference if you would like to have one.
Q: My computer died. What do I do?
A: As this is a programming class, we do expect you to have access to a computer for the duration of the semester. If you are temporarily without a working machine, Python and PyCharm should be installed on publicly available machines in Alderman Library and other locations. We expect you to make regular backups of your code so in the event of a failure you still have access to your assignments. We will not accept a computer failure as a reason to waive a late penalty for an assignment. We highly suggest you look into using a cloud-based solution to make constant backups of particular directories on your computer, such as UVaBox found at http://its.virginia.edu/box/ or Dropbox found at http://dropbox.com. You can also do some basic assignments in an in-browser Python environment such as https://repl.it/.
Q: I have (insert awesome club/group here) during my lab time. Can I permanently swap labs?
A: You can, assuming you find someone to swap with. You can post on Piazza if you are interested in doing this. If BOTH people agree to the swap, email Prof. Sherriff and he'll take care of it. DOUBLE CHECK that you both can actually take the other lab before agreeing! Check Piazza for more information.
Q: I have (insert awesome club/group or some special test/class session here) just during one lab session. Can I go to another lab this week?
A: Due to fire marshall limits, you cannot attend another lab session, even for just one week. We're also doing group work, so you need to be there for your team. If this is a class/test session, your other professor should provide you with an alternate time since you have a university class at the same time. Missing one week in general will not affect your grade. Every student can miss one lab with no penalty (and you do not need to make up the work).
Q: I'm in the X lecture, can I go to the Y lecture instead?
A: 1111 students can attend an 1110 section on occasion if they like. 1110 students should not attend 1111 lectures due to the size of the classroom. 1110 students can attend the other 1110 section on occasion as well.
Q: Can I take my test in a different lecture section?
A: Absolutely not.
Q: I have another final exam at the same time as our final exam. What do I do?
A: When we get closer to the end of the semester, we'll have a form you'll fill out to get a separate time. We will accommodate most all cases here with no issue. Please do not email us about this before the end of the semester as we will have no other information to tell you.
Q: I have travel and will miss the final exam. What do I do?
A: Technically, we don't have to provide any accommodations for travel. International flight reservations and things like that we will try to accommodate, but typical end of semester travel will not be accepted.