CSc 250: Essential Computing for the Sciences

Syllabus, University of Arizona, Spring 2017

University Catalog Description

This course teaches essential computing skills for students in scientific disciplines. No prior background in programming is required. The content focuses on three computational skills: (i) basic programming in a scripting language such as Python and knowledge of its supported data structures; (ii) facility with the UNIX operating system environment, including file structure, regular expressions, and job control; (iii) essential database skills, including database accession and interfacing through the SQL query language.

Location and Time

Lectures in Gould-Simpson, Room 701. Tuesdays/Thursdays 12:30pm-1:45pm.

Friday labs will also be in Gould-Simpson, Room 930. Either 12:00-12:50pm or 1:00-1:50pm.


Benjamin Dicken


Office: Gould-Simpson 826

Office hours: Tu/Thu 9:30-10:30am and 2:00-3:00pm or when my door is open, or by appointment

Teaching Assistants

Content covered

As mentioned above, we will be covering three main topics in this course:

We will start with a few weeks of learning UNIX, the shell (specifically bash), and shell scripting. After this, we will spend the majority of the semester on python, occasionally bouncing back to cover some UNIX topics. In the last few weeks of the semester, we will cover databases, and how to use and access them with python.

Class Web Page and D2L

The main course website ( will host the majority of the content, including the syllabus, slides, lecture notes, and assignments. We will only use D2L for submitting assignments and posting grades.

We will also use piazza for questions and discussion.

Textbook and Resources

There will be no required textbook for this course. There will be some assigned reading and tutorials, but these will be online references (either written by the instructor or linking to another website).

I may assign some required reading/exercises, but if I do it will not be from this book. Many of the assigned readings and exercises will come from the following online resources:

We will also be learning about unix and databases in this course. There is no required textbook resource for these topics, but I may also assign some online reading and exercises for these.

“Think Python: How to Think Like a Computer Scientist (2nd Edition)” by Allen B Downey is a good (optional) resource for those who want a paper-copy resource for learning to program in python. Getting the 2nd edition is important, because it is updated for python 3, which is what we use in this course.

When these are assigned, you will be expected to know this material on exams.


The final grade, subject to modification, will be determined by:

50% from the programming assignments (10-13 planned)

27% from the 3 regular exams (9% each)

13% from the final exam

10% from the final project

The final grades may be curved, but a weighted total of 90% and above is guaranteed to be an A, 80% and above at least a B, 70% and above at least a C, and 60% and above at least a D.

We will do our best to submit your grade for each assignment an exam within 1 week after it is due. Once your grade has been returned to you, you have 1 week after that point to dispute or request a re-grade. After this point, grades are final.

Attendance for Labs is required, and will be recorded. Lab attendance does not contribute to a positive portion of your grade, but missing a lab can hurt your grade. You may miss up to two lab sessions without penalty. After missing two lab sessions, each missed session will result in a 1% deduction form your total final grade in the class.

For example, say a student missed five lab sessions throughout the semester, two of these misses would have no penalty and three would. If this student’s final grade in the class was a 92%, 3% of the grade would be deducted because of the lab penalty. This brings the final grade to 89%.

A lab may be missed without penalty and without counting towards your two penalty-free misses with a valid reason. Valid reasons include medical emergencies, and other extreme scenarios. You must give the instructor 24 hours of advance notice and may need to provide documented proof of the reason for missing.


There will be four exams total. Five “regular” exams and one final exam. The exams will cover lecture topics, homeworks, and assigned readings/exercises.

Late arrivals will not be granted extra time after exams are handed out. Missed exams may not be made up except by prior arrangement. All exam dates are tentative and subject to change.

Exam 1: Thursday, February 9, 2017

Exam 2: Thursday, March 9, 2017

Exam 3: Tuesday, April 18, 2017

Final Exam: Whatever the UofA policy says!

The final project will be due around or before finals week. Exact date TBD.

For each exam, any material covered in the semester so-far is fair game. However, I will tend to include more recently-learned material vs older material.

Test Makeup

If you are unable to take one of the mid-semester exams or the final exam at the scheduled time for a valid reason, you must contact Benjamin to get permission to take a makeup test. Unless you are physically unable, send an email BEFORE the test with at least 24 hours of notice. In this email, describe why you cannot take the exam at the scheduled time and location, and how you can be contacted to discuss how to make up the test. Without previous notification and a valid excuse you may not be able to make up the missed test. Documentation may be required. Notice the final exam due date. Do not make travel plans that would have you leaving before the final exam unless you are willing to accept a zero on your final.

Programming Assignments

The major outside-of-class activity for this course will be developing weekly programming assignments. We assign them so that you will learn how to write complete, functional, and understandable computer programs. You will have roughly 1 week for each homework assignment.

Python programs will be graded using python 3.6,

Final project

The final project will involve writing a program that will require a combination of all the things you have learned throughout the course. Specifically, you will need to: (a) write a significant amount of well-structured python code, (b) use your knowledge of the UNIX operating system, and (c) use your knowledge of data processing, and SQL. It is worth more points, but will require more effort. Talk with me if you have concerns about this.


Labs will be held on Fridays from 12:00-12:50 and 1:00-1:50pm, depending on your section. During your lab, you will have a set of activities to complete. To get credit for these labs, you must attend the lab. Labs cannot be made up.

Computer Labs

The Department of Computer Science computers labs, located in Gould-Simpson rooms 228 and 930, will be available for your use for the programming assignments. These labs will be accessible to you 24 hours a day, seven days a week. You will also be able to complete your assignments using your own desktop or laptop computer. All of the software we use in this class will be freely (and legally!) available for you to download and install. If you do decide to use a system outside of those labs for your assignments, it’s your responsibility to learn how to set it up and use it effectively, though we will help you when we are able. So that the section leaders and/or TAs can test and grade your programs, you’ll be required to electronically transfer (“upload”) the source code to D2L before the due date. Be certain that your program runs correctly before you submit it, because we will test them extensively to be sure they work as expected.

Late Programming Projects

Each programming assignment will have a clearly stated due date and time, typically in the evening of a weekday. Electronic submissions received after that date and time will be considered late. Programs submitted within the first 24 hour period after the due date and time are considered to be one day late. Submissions received within the next 24-hour period are two days late. Programs can be up to two days late at most. D2L will be set to no longer accept projects two days and 1 minute after the due date. Any day of the week, including Saturdays, Sundays, and all holidays, count as days for the purpose of determining lateness. You will lose 15 percent of the maximum score per day the program is late. For example, if a program is due at 10:00 pm on the 12th but you submit your code at 10:01 p.m. on the 13th, it is considered to be two days late, and you will lose a total of 30% of the grade for the assignment.


Attendance for lectures is not recorded. However, each student is fully responsible for all material covered by reading assignments, lectures, and handouts.

Attendence for labs is recorded, and is required.


This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. If you have any problems or feedback for the developers, email

Find our class page at:

Students with Disabilities

If you anticipate barriers related to the format or requirements of this course, please meet with me so that we can discuss ways to ensure your full participation in the course. If you determine that disability-related accommodations are necessary, please register with Disability Resources (621-3268; and notify me of your eligibility for reasonable accommodations. We can then plan how best to coordinate your accommodations.


We will be using Python 3 to write programs. This programming language is free and available on Windows, Linux/Unix, and Macs.

Classroom Behavior

The University of Arizona has an explicit policy on disruptive behavior:

To foster a positive learning environment, students and instructors have a shared responsibility. We want a safe, welcoming, and inclusive environment where all of us feel comfortable with each other and where we can challenge ourselves to succeed. To that end, our focus is on the tasks at hand and not on extraneous activities (e.g., texting, chatting, reading a newspaper, making phone calls, web surfing, etc.). Inclusive Excellence is a fundamental part of the University of Arizona’s strategic plan and culture. As part of this initiative, the institution embraces and practices diversity and inclusiveness. These values are expected, respected and welcomed in this course.

Students are asked to refrain from disruptive conversations with people sitting around them during lecture. Students observed engaging in disruptive activity will be asked to cease this behavior. Those who continue to disrupt the class will be asked to leave lecture or discussion and may be reported to the Dean of Students.

Threatening behavior

All students are expected to abide by the Universities “Threatening behavior policy” which can be found here:

Nondiscrimination and Anti-harassment policy

All students are expected to abide by the Universities “Nondiscrimination and Anti-harassment” policy which can be found here:

Accessibility and Accommodations:

At the University of Arizona we strive to make learning experiences as accessible as possible. If you anticipate or experience physical or academic barriers based on disability or pregnancy, you are welcome to let me know so that we can discuss options. You are also encouraged to contact Disability Resources (520-621-3268) to explore reasonable accommodation.

Please be aware that the accessible table and chairs in this room should remain available for students who find that standard classroom seating is not usable.

Academic Integrity and Penalties

Programming projects and assignments in this course require individual attention and effort to be of any benefit. Unless otherwise specified in the published assignment, all work is expected to be that of each student alone. You may not consult with others, except in ways specifically authorized by the course instructor. Students are responsible for understanding and complying with the University’s Code of Academic Integrity. The Code can be found at this link The full text is also available from the Office of the Dean of Students in Room 203 Old Main.

Among other provisions, the Code demands that the work you submit is your own, and that graded programs and exams will not subsequently be tampered with. The Code also demands that you do not copy code when it is part of a published class assignment. It is immaterial whether the copying is done electronically, by retyping the code, looking at another’s computer screen, or any other means. Violations of Academic Integrity will result in a report filed to the Dean of Students. Sanctions include receiving an E for the course, even if it is a first violation. If other reports have been filed from any department, the Dean of Students may issue more severe sanctions including suspension or expulsion from the university. You are better off receiving 0 for one project rather than an E for the course and a report on your University record. Avoid Sanctions by beginning your projects as soon as possible. Do not wait until the due date! Do not look at another person’s test while the test is in progress. Do not look at other’s code, even if it is just on the screen. Do not copy files. Do not give your code to anyone even if the other person promises not to turn it in as their own, in which case you who did all the work may suffer the same sanctions as the cheater.

Department of Computer Science Code of Conduct

The Department of Computer Science is committed to providing and maintaining a supportive educational environment for all. We strive to be welcoming and inclusive, respect privacy and confidentiality, behave respectfully and courteously, and practice intellectual honesty. Disruptive behaviors (such as physical or emotional harassment, dismissive attitudes, and abuse of department resources) will not be tolerated. The complete Code of Conduct is available on our department web site. We expect that you will adhere to this code, as well as the UA Student Code of Conduct, while you are a member of this class.

Subject to Change

Information contained in this course syllabus is subject to change with reasonable notice.