This course is designed as a first introduction to computing for students interested in the physical or social sciences. Unlike the other introductory computer science courses (COMP 150 or 170), theoretical concepts and computing foundations which are useful to computer science students come secondary to more immediate, practical concerns in working with data. Also, as a likely terminal computing course, students are pushed to be self-sufficient in basic data analysis tasks. Daily instructed efforts will be task-oriented based on what is most useful to students. There will be brief code introductions given in the instructor’s chosen data analysis language, but for the majority of the tasks code will be made available in all three data analysis languages (Python, R, and Octave/Matlab). All data analysis environments chosen will employ a cell-based run/display-results cycle using Jupyter Notebooks. In the end, this course should prepare students to work in scientific research groups where automating the analysis of data sets for publication may be required.
The goal of scientific computing is to leverage computational tools and techniques to advance our understanding of the world. Although preparing and automating the processing of data may not be necessary to understand the known concepts and insights from the study of biology, psychology, chemistry, and physics, it is a necessity to advance our understanding in these fields and build the tools and techniques of tomorrow. Scientific computing emphasizes data analysis and visualization in an applied scientific context - analyzing data quickly for understanding by the individual scientist, sharing automated workflows with collaborators, and preparing results for later publication. This course will emphasize rapid, interactive, and reproducible collaborative analysis of data for scientific contribution. At the end of this course, students will be well versed in the use of an interactive environment for data analysis (Python, R, or MATLAB), with an ability to manage the collection of data, create an automated processes for analysis, use collaborative tools, and rapidly report quantitative findings.
This is an application-oriented course. Reading materials and theory will be minimal. Code and code-based tutorials will be emphasized, as well as practice over theory, with assignments providing much of the content and expectations in the course. Students are encouraged to use search engines and given tips and techniques.
Assignments are designed to engage you in your learning, so you can begin to apply these principles in practice and tailor them to your needs. This is a course meant to emphasize practice over principle so special emphasis is made to select assignments that forward the concepts in the course naturally, and evaluations will be more oriented to gauge your ability to apply what you learn in the field.
Assignments are generally due within a week after they are assigned (e.g., Monday assignments are due on Sunday; Friday assignments are due on the next Thursday). Results should be presentable, with appropriate comments for someone to follow what you have done. Assignments are to be turned in individually, although students are encouraged to work together extensively in all ways except direct copy/paste of individual work. Note, assignments will be given almost daily, and the bulk of the assignments should be attempted in class with help from other students and the instructor. To encourage in-class efforts and to provide precise feedback, completed assignments can be shown to the instructor or the TA in class before submitting to Sakai to guarantee full points. It is important to keep up given this pace of new assignments nearly daily. See the late policy below.
Project: After a few weeks into the course you will select among a small number of collaborative projects. Groups will be 2-3 people. This is your opportunity to demonstrate what you have learned in a way that reaches beyond this course assignments. The goal here is to create a coherent, completed analysis project for presentation towards the end of class. Essentially ask yourself what you would want to show an research lab or employer (or brag about to others) demonstrating what you have learned in the course. You are encouraged to reach out to people who may have data you could analyze on their behalf.
Late policy: If assignments or project work are turned in after the due date, this places an undue burden on the instructor and any TA, especially when this policy is abused. This is heightened given the pace of this course. In general, late assignments will not be accepted, though you are encouraged to discuss with the instructor if there are extenuating circumstances, in which case a point reduction is at the discretion of the instructor.
You will be evaluated in class in a manner similar to assignments - data analysis tasks using your computer, but under time pressure and without help from others. For this reason it is critical to not only complete assignments, but use the opportunity to become more efficient at data analysis tasks similar to your assignments. All quizzes and exams are due at the end of the class, with your analysis notebook (.ipynb file) submitted to Sakai - unless stated otherwise.
Grades are determined by a simple points system, with a total of at least 100 pts as the goal though more than 100 points are likely. The expected distribution of points is given below, with the exact scale determined by point values given for each assignment, quiz, or exam - this is subject to minor modification based on actual points given. Note, due to the nature of the course, exams and quizzes are the primary means of establishing your final grade, so please complete the assignments in a timely way and study appropriately prior to each quiz and exam.
Grading Scale: 90, 80, 70, 60 with a ‘+/-’ if within 3 percent of the border. Points needed to get each grade: A=93.0, A-=90.0, B+=87.0, B=83.0, B-=80.0, C+=77.0, C=73.0, C-=70.0, D+=67.0, D=63.0, D-=60.0. Don’t expect this scale to change. If class grades are low (I expect the vast majority of students will get A’s and B’s), extra quizzes or assignments will be given to add points. (Note, these grades are based on points and not percentages, so if 120 points are given, you only need 93/120 to get an A)
Participation Policy: Attendance is not required except on quiz and exam days (which in this class will generally be on Wednesdays). There is no direct participation grading, but in the past there has been a strong correlation between engagement and accomplishment in courses - especially for those that are struggling with the material. Feel free to prioritize your time, but prioritize wisely.
Academic Dishonesty: You are free to discuss anything freely and openly that is not a quiz or exam, including looking at each other’s code, but you are NOT allowed to copy and paste or any thoughtless equivalent - if in doubt ask, or at least document your source clearly and explicitly. Cheating on assignments can result anywhere from a zero on the assignment to a zero for all assignments points for the course depending on the severity. Students caught cheating on quizzes or the final exam will receive an F for the course and the matter will be discussed with the appropriate dean.