No profession unleashes the spirit of innovation like computer science and engineering. Computer software runs the modern world. In the last week, what was the longest stretch of time you went without interacting with a computer in some way? Think of cell phones, cars, Google, Facebook, Twitter, eBay, Wikipedia, Roomba, World of Warcraft, Amazon, and NOAA’s hurricane prediction, most of which are less than a decade old. Moreover, computation is now radically transforming the social sciences and humanities. Students will benefit by being able to apply computational thinking to their own study and research areas.
About the Course
This course is designed to give you an overview of computer science and teach you about problem solving in a way that utilizes computation. Upon completion of this course, you will have a feel for how to think about and structure problems in such a way that you can use a computer to help you solve them. Programming is necessarily a part of this process, but it is neither the only part nor the most important part.
From this course, students should become proficient at an introductory level in each of the following.
- Using computational thinking to understand problems and design algorithms
- Develop programs in Python using best practices
- Discuss examples of computational models
- Analyze data sets
These ideas are woven throughout the course.
- Problem understanding
- Problem decomposition
- Algorithm design, articulation, & testing
- Implementation design, coding, & testing
- Language syntax and semantics
- Best practices in code style
- Data structures -- e.g., lists, mappings, sets, stacks, queues, matrices, graphs
- Algorithms -- e.g., list searching, graph searching
- Simple object-oriented programming
The course will be organized around the following main applications. You will then explore algorithms and implementations of computational solutions for those problems. These will introduce Python programming and computational problem solving throughout the course.
Customizing House Plans: Using architectural cost models.
Rock-Paper-Scissors-Lizard-Spock: Playing a game from popular culture.
Statistics: Solving statistical problems.
Mathematical Modeling: Modeling and exploring the behavior of populations in a predator-prey relationship as represented by Lotka-Volterra equations.
- Databases: Storing, updating, and finding information in a large data set.
Text Analysis: Analyzing statistical properties of natural language texts. Generating similar natural language text automatically via Markov models.
Social Networks: Building social networks and measuring properties thereof.
Machine Learning: Using neural nets to recognize visual patterns.
Before class, you are expected to watch the video lectures and take the online quiz that correspond to the class. These materials and their schedule are listed on the Modules page. These quizzes are graded.
During class, you will work on exercises (see Class Schedule or Modules) that apply the ideas from the videos. You will work in groups. Participation during class -- i.e., attending and working on the exercises — counts as part of the course grade. Completing the exercises successfully is not required, but doing so will help on the assignments. Exercise solutions are provided after class. Sometimes the exercises are pieces of the assignments.
Summer session only: Class is online via teleconferencing (see Conferences) at the scheduled class time — 10:30am-12n Central Time. Due to scheduling issues, attendance is not required, but still strongly recommended. If there is demand, I will also hold class in a classroom, so that Houston-based students can attend in person. Working in groups is optional for those teleconferencing.
Assignments are done outside class, although you can work on them during class if you've finished the class-time exercises. Each assignment has two parts — one where you will turn in code, and one where you will turn in text.
Exams will be during 3-hour scheduled periods outside of class. The last exam will be scheduled by the Registrar.
Posts by the instructor to Piazza may include assignment/exam clarifications or corrections that are considered part of the requirements.
The time that students spend varies tremendously, but the following numbers are what students report.
- Before each class: About half hour of videos — sometimes more, sometimes less. Students skip through or re-watch as desired. On some devices, you might be able to speed up playback of the videos. A short quiz that students typically spend about a half hour on.
- During class: Class attendance and participation is expected. But, you always attend class, anyways, right?
- Assignments: Nine per semester — a week or two per assignment. Students average about 5 hours per assignment, but with a wide range of 1 to 15 hours per assignment.
Summer session only: The total workload is the same, but remember the schedule is compressed, with class every weekday and generally two assignments per week!
Contacting the Staff
- Piazza: A discussion forum suitable for most questions. Read daily, as important clarifications may be posted here. You can post anonymously. You can post private questions that are seen only by the course staff.
- Email: Suitable for private questions to the instructor or individual TAs. Please be sure to include COMP 130 in the subject. See Course Staff in the Canvas navigation column for email addresses.
- Office hours: Suitable for longer discussions and code help. See Course Staff in the Canvas navigation column for times and locations.
Summer session only: TAs do not have scheduled office hours during the summer.
- Class time: Suitable for longer discussions and code help, although the focus should be on the current set of exercises.
Your course grade will be broken down as follows:
|Class attendance & participation||You are expected to attend class and work with a group on exercises. Completing the exercises successfully is not required.||10%||0%|
|Before-class quizzes||There will be a short quiz before each class. You will have three attempts at each quiz (with no penalty). You will be able to see the explanations/hints immediately after you submit.||10%||10%|
|Assignments||Nine assignments, completed individually.||50%||55%|
|Exams||Two exams, completed individually.||30%||35%|
The code on each assignment will be partially auto-graded. When you turn it in, you'll see a tentative score that is initially recorded in the system. However, your final score may change when looked at my human graders. Parts of each assignment are not considered by the auto-grader. Also, human graders may alter your score higher for partial credit or lower if your code computed the correct answers only by accident.
Note that exam scores are typically lower than assignment scores, even though they are of similar difficulty. On assignments, you have essentially unlimited time and can get help from course staff. On exams, you have limited time and very limited help from course staff.
No extra credit is available.
The Canvas system has the notion of a "due date" and a "available until date". The "due date" is the real deadline by which you should turn in your work. The "available until date" is the time after which the system will stop accepting submissions.
Late penalty: We will apply a late penalty of 10 points per day for assignments and quizzes (not exams) turned in after the due date.
Late days: Each student is allowed 3 late days or automatic penalty-free 24-hour extensions of assignment deadlines (not quizzes or exams). These will be applied by the graders at the end of the semester without any required student action.
Extensions allow students to turn in graded work late without a penalty. Extensions will only be granted under exceptional circumstances (such as medical emergencies). Having lots of work and deadlines is not an exceptional circumstance; it is part of being a college student.
If you believe your grade on an assignment is incorrect, you have 7 days from when the assignment was returned to bring this to the attention of the staff.
- Discuss your assignment with the original grader.
- You can appeal to the TA in charge of grading (see the Course Staff in the navigation), or to the instructor during the summer.
Honor Code Policy
We take the Honor Code very seriously. The work you submit for this class is expected to be the result of your own work. Attempting to take credit for someone else’s work by turning it in as your own constitutes plagiarism, as defined by the Rice Honor Code.
How the Honor Code Applies in This Course
For all the graded work, you may use your own materials, including notes and in-class exercises. You may use anything provided as part of the course, including videos, posted solutions, and CodeSkulptor documentation.
You may not obtain solutions from other students in the course or previously in the course. You may not obtain solutions posted on the web, if anyone posts them.
Additional details follow.
If the assignment solution has been posted, but you are still working on your assignment (typically because you have an extension), you are not allowed to view the solution.
You may collaborate with anyone or with any website or book. However, you may use at most two lines of code from any such source. Changing variable names or otherwise transforming code does not allow you to exceed that two-line rule. You should comment your code to cite any sources.
After you have taken the quiz once, you may discuss the contents and topics of the quiz as much as you like with others, but you should not share actual solutions.
You will need to bring a laptop to access the exam and course materials. I cannot guarantee power outlet availability. Bring headphones if you will listen to course videos or music.
You may not access any website not part of the course. You may not use any books.
No collaboration is allowed.
Students with Disabilities
If you have a documented disability that will impact your work in this class, please contact me in the first two weeks of class to discuss your needs. Additionally, you will need to register with the Disability Support Services Office in the Allen Center.
The syllabus page shows a table-oriented view of the course schedule, and the basics of course grading. You can add any other comments, notes, or thoughts you have about the course structure, course policies or anything else.
To add some comments, click the "Edit" link at the top.