Syllabus
University of Mary Washington
Department of Computer Science
CPSC110: Introduction to Computer Science
Fall 2010
TTh 3:30-4:45pm Trinkle B6
website: http://tiny.cc/cpsc110
Description
This course provides an introduction to computer programming focusing on how to design programs. We will learn the different stages involved in programming–from analyzing a problem, to coding that problem in the computer language Python, to testing whether that solution works.
Format
The course takes an active, hands-on approach to learning. Students will spend much of the class time exploring, experimenting, and evaluating code using their own laptops. Class time is divided between short lectures, individual experimentation with programming, working on code with a partner, team projects, and quizzes. During the first week all students will be assigned to permanent teams. Depending on the final class size there will be between 5-6 people per team. Teams are constructed so they contain people with a variety of skills including those with l33t skillz.
Laptops
I am assuming that nearly everyone (perhaps 28 out of 30 students) has a laptop. You will be working with your laptop during a large percentage of our class. It doesn’t matter if your laptop runs Microsoft Windows, is a Mac, or an Ubuntu machine. It doesn’t matter if it is 5 years old. It also doesn’t matter how powerful it is–even a basic netbook will work. Don’t worry if you don’t have one–I can accomodate a few people without.
Grading
Grading is based on a method developed by Professor Lee Sheldon at Indiana University. It is based on obtaining experience points (XP). The number of XP determines what level you are at. You start the class at Level 1 and with 0 XP. The level you obtain at the end of the semester determines your final grade. Here is the chart:
There will be opportunities to earn at least 2200XP during the course. If you fail to obtain enough XP on one task you can simply do an additional task. For example, if you do poorly on a quiz, you can elect to do an additional side challenge. You gain XP working individually, with a partner, and with your team.
Activities
Quizzes – 300XP
There will be approximately 6 short multiple-choice quizzes given during the course. Each quiz will be taken individually, then, immediately after, the same test will be taken as a team. Each individual quiz is worth on average 25 points; each team quiz is also worth on average 25XP.
Midterm Challenge – 120XP
The midterm challenge is programming change (you write a program). I will give you an English description of a problem. Your job is to come up with a solution to that problem and program it in Python. This work is done with a partner in class.
Exam – 250XP
Throughout the semester I will post questions & problems. These are part of the final exam for the course. You can elect to complete the work anytime between the time the problem is posted and Thursday Dec. 9th at 9:30pm. You will gain 10% more XP if you complete the work within a week of the problem being posted.
Real-time Challenge – 150XP
The format of this challenge depends on how the class progresses. The current plan is to have each student come to my office. I will give that student a programming problem and the student will need to write a short program that solves the problem.
Side Challenges – at least 150XP
In other classes this might be termed extra credit. Throughout the semester I will post a side challenge–typically a question–on our website. Depending on the question, it can be answered with a short paragraph or a few lines of code. The experience points will vary depending on the challenge but will be worth at least 20XP.
Pair Programming Challenges – 375XP
For these challenges you will pair up with a partner of your choice. Many of the challenges will require that you pair up with a partner that is not in your team. You will be working on writing code (programs) that solve a particular problem. This work is typically done during class time. The experience points vary depending on the challenge. Typical challenges wil be about 30-40XP.
Individual Programming Challenges – 400XP
This is individual programming done in and outside of class. The challenges will vary in difficulty.
Team Projects – at least 500XP
Team projects may be programming tasks, design tasks, or other work.
Team Participation – about 120XP
Each student will rate the helpfulness of all members of their team. Individual team participation scores will be the sum of the points they receive from other members of their team. Each team member distributes 100 points to other members of the team. The average team participation score will be 100 points. The rater must differentiate some of their ratings (they cannot assign the same rating to all members).
Avatar names, pseudonyms, noms de plume
During the first week of class I will ask you for your avatar name, pseudonym, whatever. This is the name that will appear on the Experience Point Google Spreadsheet that will be viewable by everyone in the class. If you wish to remain anonymous, don’t share your avatar name with anyone. On the other hand, if you would like recognition for achieving level 10 as an example (“a big shout out to tera miner for achieving level 10″), you can share your name. The decision is yours. To further protect the anonymity of those who wish to remain anonymous, the spreadsheet will also be populated by fictitious avatar names.
Textbook
There is no textbook for the course. However, if you tend to learn better from books than from lectures, it may be helpful to have a Python book. Some recommendations are listed in the resource section of our class webpage.
How to submit programming challenges
Unless I specify that the work needs to be demonstrated in class, you will be submitting your individual and partner programming challenges via email to submit.0.bot_AT_gmail.com. You can either attach your python file as an attachment or paste your code into the body of the email. In either case for individual challenges the start of your code file needs to contain the following information
# your full real name
# the assignment name
Do I need to be a math wiz or computer geek to succeed in this class?
I am hoping that there will be some of you who look over the above list of activities and think, wow! that’s exactly what I want to do. I expect some of you will look at that list and panic. Programming in front of a teacher–that seems scary and high stress. You may hate math and feel you have no talent there. You may feel that you are not computer geeky enough to take the class. Rest assured, this is not the case. I designed this course to enable people from a variety of backgrounds to succeed. You’ll be doing the majority of your programming in class and much of that time will be working with other students. If you have problems we will solve them quickly. The computer language we will be using, Python, is easy to learn but yet very expressive.
I figure if I can program chances are good that you can program. I have a Bachelor of Fine Arts in music performance. I took zero math classes in college. Zero. Maybe you think, yeah, but you were probably a math wiz in high school. Nope. I went to an all boys trade high school with basically zero math. Regardless of your background, if you are interested in learning to program you can do it.
If you have any questions or would like more information about the course please contact me.
If you have any computer related questions, even if they are not central to the topic of this course, please come and see me.
Accommodations for students with special needs
Any student with a documented disability may receive a special accommodation to complete any requirements of this course. If you are have a disability or believe you have one you may wish to self-identify. You may do so by providing documentation to the Office of Disability Services located in Room 203 of George Washington Hall (Phone: Voice 540-654-1266, Fax: 540-654-1163). Appropriate accommodations may then be provided for you. If you have a condition that may affect your ability to exit the premises in an emergency or that may cause an emergency during class, you are encouraged to discuss this in confidence with me and/or anyone at the Office of Disability Services. This office can also answer any questions you have about the Americans with Disabilities Act (ADA).