Course Evolving: Site Last Updated 5/25/2020
Class Times / Locations
Monday/Wednesday 11-11:50AM Pfahler Hall, Room 012
Office Hours (in Pfahler 101J)
Monday 4:30 PM - 5:30 PM
Tuesday 3:30 PM - 5:30 PM
Wednesday 10:00 AM - 11:00AM, 4:30 PM - 5:30 PM
Thursday 10:00 AM - 11:00 AM
- 8:00PM - 9:00PM Monday/Wednesday on Microsoft Teams
The Python programming language is ubiquitous across engineering, the sciences, and digital humanities, largely because of the low barrier to entry and its extensive community support and development efforts, making it a natural starter language for data processing and automation. As such, this course will serve as an introduction to the Python programming language and its applications, suited for those with no prior programming experience. Students will learn basic programming paradigms in Python, such as variable manipulation, loops, and methods, in the service of myriad interdisciplinary applications in the sciences and digital humanities, including digital audio/image analysis/synthesis, steganography (data hiding), particle simulations of celestial bodies, music analysis, genome similarity measurements, and web scraping / text analysis. The course will culminate in an individual project related to a question of interest to the student.
A word on patience and debugging
Computer programming can often be frustrating, since not only do computers have very little tolerance for mistakes in their language (so-called "syntax errors") that will cause a program to not even run, but even if you manage to get a program to run, it still may not behave as you were intending it to. Computers will do exactly what you tell them to do in code, so you will have to figure out where you told the computer something different from what you intended. This process is called debugging, and it is time consuming and difficult even for very experienced programmers. So do not be hard on yourself if your programs don't work the first time around (they rarely do, even if you've been programming for decades!). But be sure you leave yourself adequate time to work on the assignments, because the amount of time it takes to resolve issues can be unpredictable.
A word on background and inclusivity
It is often the case that some students have had a good amount of programming experience before they start a course like this, either as part of a high school curriculum or on their own. Some students may have already taken CS 173! However, no prior knowledge whatsoever is assumed, so we start from scratch. It is a human tendency to show off how smart or knowledgeable we are to let everyone around us know, but please avoid asking leading questions and distracting the class if you have had prior experience; it can be very discouraging to people who have not seen the material before, and it can quickly poison a classroom environment. If there's an advanced topic you would like to discuss, my office door is open, and I can give you a nearly unlimited supply of extra things to challenge you. But please keep it to yourself. I also expect those of you with more experience to help those in our community who are new. Conversely, if this is brand new to you, do not worry! Some of our best senior computer science majors at Ursinus started off in intro courses with no experience, and our goals is to get everyone on the same page in this course.
- Learn the appropriate use of a programming language in the service of fundamental computational problems in the sciences in digital humanities.
- Learn to be a patient problem solver by developing comfort with the edit -> compile -> run loop, along with basic debugging skills.
- Gain comfort using libraries and online documentation to leverage work that other people have already done.
No prior programming experience is assumed! People from all backgrounds with all levels of experience are welcome. As long as you have a laptop that was manufactured within the past 10 years, you will be able to do all of the assignments and participate in class. We will also go over all math as needed (high school algebra and trig will help).
We will be using Canvas, but only to submit assignments and to store all of the grades.
For all other discussions and announcements for the course, we will be using Microsoft Teams, which is linked to your Office suite through Ursinus, so you are automatically enrolled. There you can ask and answer questions about the lecture content and assignments. Since it is likely that students will have similar questions, it is much more efficient for me to answer them there so the whole class can see the answer, so it is possible that I will ask you to re-send a question on Microsoft Teams that I get in e-mail (please do not be shy or take it personally if I do so; it means it was a great question and worth sharing with everyone!)
Microsoft Teams Communication PolicySince this is a class-wide communication, the following rules apply to Microsoft Teams
- Students are expected to be respectful and mindful of the classroom environment and inclusivity standards. They are equally applicable to a virtual environment as they are in class.
- Students are not permitted to share direct answers or questions which might completely give away answers to any programming assignments. When in doubt, please send me a direct message there.
- I will attempt to answer questions real time during my virtual office hours. Otherwise, I will make every attempt to respond within 24 hours on weekdays, at any time before 9PM. I cannot be expected to respond at all on Saturdays or Sundays, so please plan accordingly. (Of course, students can and should still respond to each other outside of these intervals, when appropriate. This could be an opportunity to earn grace points!).
- Students may ask anonymous questions by following a link to a survey at the top of each channel.
The official textbook for this course is CS For All, which is freely available on Harvey Mudd's web site.
Homework will consist of a series of 8 mini assignments that students do in lockstep, followed by individual final projects of the students' choosing. It is encouraged that the students seek out other faculty on campus to provide ideas and/or data for the final project. By default, I can provide a few interesting but ``canned'' projects for students to work on
Letter grades will be assigned on the scale below at the end of the course. "Grade grubbing" will not be tolerated. On my end, every assignment has or will have very precise expectations and point breakdowns. I will also return assignments in a timely manner, and the running weighted grades will be updated on Canvas. Therefore, I expect a commensurate level of respect from you. In sum, you should know where you stand at all times, there will be plenty of opportunities to improve your standing, and there should be no surprises at the end of the course.
In lecture, my goal is to get everyone involved in their learning real time as much as possible. If a few students are participating disproportionately, I reserve the right to use a wheel of fortune app to randomly call on people from the roster.
In addition to ordinary participation that follows the natural rhythm of a lecture, most days there will be at least one "grace point problem," which is a question that follows on the heels of newly presented material. Students will split into groups of 2 and try to write some code to address a particular problem. When a group of students believe they have figured out the answer, they raise their hand. The other students can continue to work while I verify that the answer is correct. If the answer is correct, the students present the answer to the class. At that point, each student in the group receives a grace point, which can be applied towards one free late day on most assignments and labs. If the group is not correct upon my checking, then the groups continue this process until one gets it correct, and then the competition is over.
Other ways to earn grace points are as follows:
- Helping to teach a student a topic during office hours.
- Certain calls for participation in class
- Particularly helpful or insightful messages on Microsoft Teams
- Finding mistakes in the book or on the assigned homework and labs
The following additional rules apply to grace points:
- A student may not use more than 4 late days (12 grace points) on any given assignment, so that I can give timely feedback.
- Grace points cannot be used retroactively
Overall Participation Score / Classroom EtiquetteFor classroom attendance, the following rules apply
- Points will be evenly divided among all classes.
- Students with an unexcused absence from a class will lose all points for that class.
- It is imperative that students show up on time, because important announcements may happen at the beginning of every class. Therefore, any student who shows up after the lecture has started will lose half of the points for that class.
- Please be attentive during class. There will be class exercises that involve coding, so you will be using your laptop most lectures, but lecture time should be used for learning computer science. If I have to ask you more than once in a single lecture to cease use of your electronic device for reasons not related to CS, it will count for a half absence for the day. Alternatively, please try to think of this as a safe space away from social media. We could all use a break, and we are fortunate to have a good excuse to make that space.
- Please follow common courtesy. For instance, you can bring food and drink as long as it's not distracting, but please clean up after yourself if you do. Our janitorial staff deserves the utmost respect and help with their job.
My goal is to foster a environment in which students across all axes of diversity feel welcome and valued, both by me and by their peers. Axes of diversity include, but are not limited to, age, background, beliefs, race, ethnicity, gender/gender identity/gender expression (please feel free to tell me in person or over e-mail which pronouns I should use), national origin, religious affiliation, and sexual orientation. Discrimination of any form will not be tolerated.
Furthermore, I want all students to feel comfortable expressing their opinions or confusion at any point in the course, as long as they do so respectfully. As I will stress over and over, being confused is an important part of the process of learning computer science. Therefore, I will not tolerate any form of put-downs by one student towards another about their confusion or progress in the class. Learning computer science and struggling to grow is not always comfortable, but I want it to feel safe. Remember, "fail" stands for "First Attempt In Learning."
Ursinus College is committed to providing reasonable accommodations to students with disabilities. Students with a disability should contact the Directory of Disability Services, Dolly Singley, ASAP. Ms. Singley is located in the Center for Academic Support in the lower level of Myrin Library. Please visit this link for more information on the process. I will do my best to accommodate your requests, and they will be kept completely confidential.
Mental health care is increasingly recognized as a crucial service for the undergraduate population. To decrease the barrier for entry, Ursinus college will be providing additional drop-in hours during the semester. Please refer to the flyer below for the awesome program. If you are still hesitant to go, take me (Professor Tralie) as an example of someone who has benefited from talk therapy in the past. I am happy to discuss this in office hours in more detail.
schedule. Students will lose points at the following rate (unless an excuse from the dean is provided):
- -5% for work submitted between 1 minute - 6 hours late
- -10% for work submitted up to 12 hours late
- -15% for work submitted up to 24 hours late
- -25% for work submitted up to 48 hours late
- -40% for work submitted up to 96 hours late
- -50% for work submitted more than 96 hours late
Communication between students is allowed (and encouraged!), but it is expected that every student's code or writeups will be completely distinct! Please do not copy code off of the Internet (repurposing code from the Internet will probably make it harder anyway because the assignments are so specialized). Please cite any sources in addition to materials linked from the course website that you used to help in crafting your code and completing the assignment.
To encourage collaboration, students will be allowed to choose one or more "buddies" to work "near" during the assignment. Students are still expected to submit their own solutions, but they are allowed to provide substantial help to each other, and even to look at each others' code during the process. Students should indicate their buddies in the README upon assignment submission. Please let me know if you would like a buddy but are having trouble finding one.
Below is a table spelling out in more detail when and how you are allowed to share code with people (table style cribbed from Princeton CS 126)
|DISCUSS CONCEPTS WITH:||✔||✔||✔||✔|
|ACKNOWLEDGE COLLABORATION WITH:||✔||✔||✔||✔|
|EXPOSE YOUR CODE/SOLUTIONS TO:||✔||✔||✘||✘|
|VIEW THE CODE/SOLUTIONS OF:||✔||✘||✘||✘|
|COPY CODE/SOLUTIONS FROM:||✘||✘||✘||✘|
If the work you submit appears to be copied from previous work or the collaboration policy has been violated in any way, regardless of intent, then it may be an academic dishonesty case, and it will be referred to Dean Sorensen.