Scientific Python Fall

Course Level: 
Course Open to: 
Students on-site
Remote students
Academic Year: 
US Credits: 
ECTS Credits: 
Course Code: 
DNDS 6288
Course Description: 

IMPORTANT: Please note that there is a change to what was previously announced. There will be only one group in the fall term, taught offline and online (details below) by Tiago Peixoto.

This course can accommodate a maximum of 25 students: 14 offline and the rest online, due to COVID-19 measures (14 is the new, safe capacity of the largest computer lab). Classes will also be recorded for asynchronous teaching.

Priority is given to DNDS students. All other students are selected based on the entry test score. Students that take the course for grade have priority over auditors. All students, both registered and in the waiting list, must take the entry test on the first day.

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 will try to fit the needs of students at different programming levels.

  • If you are already a good programmer, this course will be probably too easy for you.
  • If you have never programmed in your life, this course might be very fast-paced, so consider complementing it with tutorials from other sources, like those of code-academy. Alternatively, you can take MATH 5006 Python for Beginners instead of this course.

However, we will do our best to adapt classes and exercises based on the student feedback during the tutorials and hands-on sessions.

We expect you to come to lectures and labs, ask questions when you get stuck, do teamwork (yes, even if you are the best in the class and able to complete tasks on your own!) and develop a project taking advantage of tutorials.

The goals of the course:

The overarching goal is to equip students 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.

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 exploration 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 web scraping
  • Use of web APIs
  • Use of special python packages, like graph-tool.
  • Performing basic data mining and machine learning analysis with Scipy and Scikit-learn

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: 30% of the final grade
  • Assignments: 30% of the final grade
  • Final project: 40% of the final grade

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

The entry test applies to everyone who wants to take the course, for grades or audits. As a summary, this is the priority list that needs to be implemented:

1) DNDS students, taking the course for grade.

2) All other students that take the course for grade, based on the entry test, up to 25 students in total/group.

3) If there are places left, all students that take the course for audit, based on the entry test.