[Note: this webpage last modified Monday, 17-Sep-2012 19:06:59 EDT]
Computers are stupid! (more on this later...)
Work smarter not harder! (Actually, work smarter /and/ harder)
General Information
Announcements
Recorded Lectures
Purpose and Focus of Course
Grading, Assignments, and Expectations
Blackboard
Academic Integrity
Special Needs
Lecture: TR 12:30-1:45pm in A019 Root Hall. If you are in
section 002, you are with Dr. Sternfeld, and this website does not
apply to your course.
Final exam: Tuesday Dec 11, 1:00-3:00pm.
Office hours: I am generally in my office and available
most MWF's from about 8:30am-4pm. My official office hours are
Wednesdays 9:30-11:30am. My office is A-156 Root Hall.
Instructor: Jeff Kinne
Website:
http://cs.indstate.edu/~jkinne/cs151-f2012 (or browse for Jeff Kinne
on http://mathcs.indstate.edu, or
search for Jeff Kinne on google, bing, yahoo, etc.
and find a link to the course website from my personal webpage)
Prerequisite: There is no course prerequisite for this class. These are things I assume you already know from previous courses or experience: basic computer use (web browsers, email, installing programs on your computer), basic algebra and math. For the math, I assume you can do things like solve an equation for an unknown, or draw a graph/plot of a function such as y = x2. We will review any other math that may be needed (which will not be much).
GA Lab hours: We have a few graduate assistants who will be in the computer science unix lab, room A-015 in the basement of Root Hall, for about 20 hours per week in total. You can go to this lab to work on your programs. The computers are unix machines, and you can use the cs151xx login that will be sent to you during the first week of class to use them. Or, you can bring your laptop to work on. Either way, you can ask the graduate assistants to look at your programs, and you can work with any other CS 151 students that are there (you could use the lab as a regular meeting place to work with your classmates). The regular hours that the lab will be open are still be worked out. For now, the hours are the following, though this may change as schedules are worked out this week.
If the GA's will not be in the lab during the normal hours for some reason (e.g., illness), I will plan to email the class list to let you know.
Required text: We will follow the text Think Python: How to Think Like a Computer Scientist by Allen Downey. The text is freely available online from that link, or you can buy a physical copy of the book.
More Information about Python: Official Python Web site, Python Tutorial, Python Language Reference, Python Language Library, LearnPython - interactive tutorial, PySchools - another interactive turotial, Learning with Python: Interactive Edition (for Python 3)
There are very many online resources that you could find for learning to program with Python. You could search on youtube for videos, search the web, etc. You could look for other Python courses that have their information online, for example this one from MIT, or this one from MIT that has videos.
Another source similar to Think Python is the Python Programming Wikibook.
Announcements regarding the course will be made both during class and via email to your @sycamores.indstate.edu email address. You should regularly check this email account or have it forwarded to an account that you check regularly. You can set the account to forward by logging into your indstate.edu email from Internet Explorer (the "light" version of the webmail client that opens up from Firefox or Chrome does not give the option to forward email).
Some of the lectures in the class will be recorded using Tegrity. You can view these lectures by going to blackboard for this course and clicking on "Tegrity Classes" on the left hand side. You will be asked to install a browser plugin to allow you to view the lectures. Note that any questions/responses from students may also be recorded as part of the lecture (audio only, there is no video recorder in the classroom). If you have any concerns over this, please notify the instructor in the first week of classes.
This course is an introduction to programming in Python and is also the first course in computer science taken by those majoring or minoring in computer science. The primary goal of the course is that you learn the fundamentals of programming in Python. After taking this course (if you put in the time and earn a good grade), you should be able to write programs and solve problems using Python, and you should be able to read, understand, and modify Python code written by others.
Why Python? We have chosen Python as the programming language for this course because it is easier to learn than many other important programming languages such as C++ and Java. At the same time, Python is widely used in industry and a good language to know.
Example topics In addition to becoming familiar with Python, programming, and certain computer science ideas, I hope you have fun. Here are some examples of topics we may may cover and programs you will personally create!
We will not cover all of those topics, but that should give you an idea of the types of things we will look at. Hopefully there are some things there that sound exciting!
Extra practice: For some Python fun once you are comfortable with Python later in the semester, try out some online programming competition/game stuff. For example, Project Euler or The Python Challenge.
The students of this course have the following responsibilities: read assigned readings before lecture, attend lecture, complete homework assignments, take exams, and complete a project. The final grade consists of:
Project: 20% of the final grade.
Homeworks: 35% total. There will be a programming homework assignment most weeks. The total of all homework assignments is worth 35% of the final grade. If you turn in the assignment late, I will grade it so you know how you did, but it will count as a 0. LATE HOMEWORKS WILL NOT BE ACCEPTED. NOTE: if you turn an assignment in more than one day early, I will look at it and give you feedback on any mistakes you might have - and if you resubmit before the due date I will count the grade for the corrected version. We may have in-class quizzes from time to time; these would be added into the homework grade.
Exams: 35% total. We will have three exams. The first two exams are worth 10% of the final grade each, and the last exam is worth 15% of the final grade.
Class Attendance/Participation: 10% total. Attendance will be taken at the beginning of each class. Half of your attendance/participation score will consist solely of whether you were present when attendance was taken each day - the total number of days present divided by the number of lectures in the semester. The other half of your attendance/participation grade will be assigned at the end of the semester based on how attentive you were in class throughout the semester.
The class attendance grade serves the purpose of giving you credit for coming to class. You benefit from coming to class by seeing me present the new material, getting to ask questions, interacting with your classmates, keeping up on what is going on in the course, etc.
The exams serve as benchmarks of your ability to relatively quickly solve problems related to the material. This helps me assign a grade, and also gives you motivation to pay attention and keep up with the assignments.
The weekly programming homework assignments are designed to solidify your knowledge by having you write programs.
The final project will be discussed further after the first few weeks of the semester. Students will choose a larger programming project that will be completed by the end of the semester and presented to the class.
Expectations. My expectation is that an average student will spend 6-9 hours OUTSIDE of class each week (that is in addition to class time) WORKING PRODUCTIVELY/EFFICIENTLY (not just starring at the computer) to complete their coursework for this class. Some students may spend less time than this, and some students will spend more.
Classroom conduct. You may not use cell phones, iPods/music players, etc. during class. You should be civil and respectful to both the instructor and your classmates, and you should arrive to class a few minutes before the scheduled lecture so you are ready for lecture to begin on time. You may use your computer during class if you are using it to follow along with the programming examples that are being discussed. You may not check email, facebook, work on other courses, etc. during class.
Important Note. If you wait until the last minute to begin your homework assignments, I will not be available to answer questions if you have problems. Programming assignments are notorious in the sense that oftentimes most of the time completing the assignment occurs after you thought you had the problem solved. This is called debugging (and testing), and is typically most of the effort in completing a program. So you MUST start your homework early. I suggest attempting the assignment the day it is given, or the day after, so that if you have a problem you can ask early. If you continue to have problems in trying to complete the assignment, you will have time to ask again. Working on programming assignments is much less stressful if you start early!
I make no promise ahead of time what the exact cutoff will be in terms of the number of points to achieve an A+, A, A-, etc. These will depend on how the course goes. I will use the guidelines below in assigning letter grades. After the first few weeks, I will include a "letter grade if the semester ended today" in your grades and for taking attendance. You can keep track of how you are doing in the course with the grades on the blackboard site for this course.
The following is roughly what I would expect by the end of the semester to earn a particular grade. This may not mean too much to you now, so you may want to check this again a few weeks into the semester.
A+/A Superior. You have a good understanding of all of the concepts. You can write programs from scratch on your own by the end, and can trace through what even modestly complicated programs do just by working it out on paper. You have a good understanding of all the aspects of the Python language we talk about in class. An A+/A student should be able to continue learning about Python (and other programming languages) on their own after completing the course.
A-/B+ Excellent. You understood most of the concepts, but may have one or two gaps. Still, you can normally write your own program from scratch and follow along in most of the program examples from class. But you may need a slight bit of guidance getting started working on a program. You also could probably keep learning more Python and programming on your own, though it will probably take you more effort.
B/B- Good. You have done well on some assignments but not as well on others. You may have trouble getting started on a program without guidance, but given hints and an outline you can normally write a correct program. Likewise with understanding a program given to you, you may need some help in understanding it. You would likely have difficulty learning more programming after the course on your own; you should be fine to keep learning in a classroom setting but should make sure to get a good start on your next CS/programming course.
C+/C/C- Adequate. You have basic understanding of Python programming but have modest gaps in your knowledge of the language syntax and how to use it effectively. You may have difficulty tracing through even a simple program that you have not seen before, but you are able to trace through a program that is similar to one you have seen before. You are minimally prepared to take another course in CS/programming. You should definitely consult the instructor of the next course you take about whether you are prepared to take the course, and you should consider repeating some of the homework assignments to continue to improve your understanding.
D+/D/D- Poor. You have some shown some ability to write programs and trace through code given to you, but you are often unable to write a program from scratch and produce programs that are not correct. You are not prepared to take another CS/programming course. You should retake CS 151 before taking CS 201.
F Failing. For much of the material in the course, you do not even know the basic information or have not turned in assignments. Most of your programs probably do not run at all, let alone correctly.
For the later programming assignments, I will assign a grade based on correctness and style. The exact breakdown may vary slightly from one assignment to another. In general, 60-70% of the points for an assignment will be given based on whether it is correct. The remaining 30-40% will be given based on good programming style: (i) choosing variable and function names that are descriptive/appropriate, (ii) writing code that is easy to understand and efficient, (iii) including documentation at the top of each file about what is in that file and how to use it, (iv) including documentation with each function describing what the function does (including what should be input to the function and what the function outputs), (v) documentation throughout each function describing the flow of the program. For portions of the code that are given to you, you do not need to add documentation to those parts of the code; if I give you partially completed code, you are responsible only for documenting the code that you add.
The course has a blackboard site. Click here to go to blackboard. You should see CS 151 listed under your courses for the current term. The blackboard site is used for giving you your grades. The blackboard site can also be used to post questions/comments about the class. You have the option of posting your questions in blackboard or just sending email. If you do not want your question visible to the rest of the class, then send email. It could be good to post the question on blackboard because (1) other students may be having the same problem and could benefit from seeing the answer to your question, (2) other students can respond to your question/comment - and may do so sooner than I do.
Other than the course grades and discussion board on blackboard, all course content, schedule, etc. is kept on the instructor's webpage (which you are currently viewing).
Please follow these guidelines to avoid problems with academic misconduct in this course:
Homeworks: You may discuss the homework assignments, but should solve them on your own. To make sure you are not violating this, if you discuss with someone, you should DESTROY any work or evidence of the discussion, go your separate ways, SPEND at least an hour doing something completely unrelated to the assignment, and then you should be able to RECREATE the program/solution on your own, then turn that in. If you cannot recreate the solution on your own, then it is not your work, and you should not turn it in.
Note on sources: if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.
Exams: This should be clear - no cheating during exams. The exams will be closed-book, closed-notes, no computer, and no calculator.
Projects: You should not copy code from the internet or anywhere else. The project should be your own work. It will be fairly obvious to me if you do copy code from the internet, and the consequences will be at the least a 0 on the project.
If cheating is observed, you will at the least receive a 0 for the assignment (and may receive an F for the course), and I will file a Notification of Academic Integrity Violation Report with Student Judicial Programs, as required by the university's policy on Academic Integrity. A student who is caught cheating twice (whether in a single course or different courses) is likely to be brought before the All-University Court hearing panel, which can impose sanctions up to and including suspension/expulsion. See the Student Code of Conduct and Academic Integrity Resources for more information.
Please ask the instructor if you have doubts about what is considered cheating in this course.
If you have special needs for the classroom environment, homeworks, or quizzes, please inform the instructor during the first week of classes. If you have any such needs, you should go to the Student Academic Services Center to coordinate this. See Student Academic Services Center - Disabled Student Services for more information.