Scientific Python

Course Description: 
Level: Doctoral
Course Status: Elective

Course coordinator: Roberta Sinatra,

Brief introduction to the course

This course will provide a comprehensive, fast - paced introduction to Scientific Python. The course will run with theoretical classes, hands - on sessions and tutorials. We expect you to come to lectures and labs, ask questions when you get stuck, and develop a proje ct taking advantage of tutorials . The course will have an intensive schedule , taking place mostly during the first month of the term.

The goals of the course

The overarching goal is to equip student s with enough programming experience to start working in any area of computation and data - intensive research. This course will lay a foundation from which new tools and techniques can be explored.

Course website

Further information, such as assessment deadlines, office hours, contact details etc. will be given during the course. The instructor reserves the right to modify this syllabus as deemed necessary any time during the term. Any modifications to the syllabus will be discussed with students during a class period. Students are responsible for information given in class.

Suggested reading

Bill Mark Lutz, Learning Python, O’Reilly (2013 ) – Also a vailable for free online
Bill Lubanovic, Introducing Python, O’Reilly (2014)
Wes McKinney, Python for Data Analysis, O’Reilly (2013)
Online resources and documentation provided during classes


In short: don't do it! You may work with friends to help guide problem solving or consult stack overflow or similar to work out a solution, but copying — from friends, previous students, or the Internet — is strictly prohibited. If caught cheating, you will fail this course. Ask questions in recitation and at office hours . If you're really stuck and can't get help, write as much code as you can and write comments within your code explaining where you're stuck.
Learning Outcomes: 

By the end of the course, students will have experience with techniques which are vital to effective scientific research, including:

- The basic syntax and use of Python as a scientific tool, including writing and executing scripts to automate common tasks, using the IPython interpreter for interactive exploratio n of data and code, and using the Jupyter notebook to share and collaborate.

- Loading data from a variety of common formats

- Manipulating data efficiently with Numpy

- Basic visualization with Matplotlib

- Performing basic data mining and machi ne learning analysis with Scipy

- Basic concepts of Natural Language Processing (NLP)


Course Requirements/Assessment

Students are expected to attend lectures and hands - on sessions, to hand in one assignment during the course and to develop a project, alone or in pairs, during the entire term.


Attendance of the classes and hands - on sessions: 40% of the final grade

Assignment : 20% of the final grade

Final project: 40% of the final grade

Final Project

For the final project, students will have to apply and show proficiency with the tools studied during the course. Possible projects will include, but will not be limited to: the analysis of a dataset, implementation and application of an algorithm, development of an interactive tool. A number of options for projects will be suggested in class. The students will also be free to design their own project within the guidelines that will be provided in the lecture.


Basic programming skills in any programming language (e.g. familiarity with logical statements, for loops, with different variables), Basic statistics.