This teaching material has been developed for the course CES Python Programming - Fundamentals (2,5 ECTS) for the Hochschule Albstadt Sigmaringen.
Course in data science. Learn to analyze data of all types using the Python programming language. No programming experience is necessary.
Quick links:
Software covered:
- Python 3
- IPython environment and Jupyter notebooks
Course topics include:
- Fundamentals of Python and its data types
- Python programming logic, conditional, loops, functions, and Python objects
- Data analysis packages Numpy and Pandas
- Plotting packages like Matplotlib
- Basic Statistics
- Modules and classes
- Git and GitHub
- AI-assisted programming
- Brunno Vanelli
- Email: brunno.vanelli@hs-albsig.de
- Pages: GitHub LinkedIn
There are a total of 15 double classes. Each of the double classes will consist of:
- 45 minutes of topic introduction, with some live examples using Jupyter Notebooks.
- 45 minutes of exercises, where questions can be asked for each of the topics.
- One assignment for self-study.
- Additional reading material for the class content (from the textbook, online resources, etc.)
- For some classes one optional bonus assignment (if you want to learn things more in depth).
- GitHub repository
- Google Collab: a platform where you can run Jupyter Notebooks in the cloud without installing anything on your computer.
- Learn Python 3 the Hard Way, by Zed Shaw: Step-by-step introduction to Python with no prior knowledge assumed; includes appendix Command Line Crash Course.
- Python for Data Analysis, by Wes McKinney ( O'Reilly, freely available as webbook): Manual focused on Pandas, the popular Python package for data analysis, written by its creator.
- Git for Windows: A BASH emulator and Git software for Windows
- Top 50 Linux commands you must know, by DigitalOcean: Introduction from DigitalOcean to the most used - and perhaps most useful - linux commands
- Introduction to Python programming, by Harvard University
- Introduction to Python, by Jetbrains Academy
- Transforming Code into Beautiful, Idiomatic Python, by Raymond Hettinger
- Real Python: Insightful blog posts about Python concepts
- MatPlotLib Cheatsheet for beginners
- 10-minute Tour of Pandas, by Wes McKinney: Basic video tour of Pandas, by the creator of the library.
- Being a Core Developer in Python, by Raymond Hettinger
- State of Python 2025: Explore the latest trends and predictions, by Michael Kennedy on Jetbrains blog
- You learn Python by doing, just like anything else. With a few exceptions, you're not going to break your computer by trying new commands. So try it and see what happens. Print output of commands. Print values of variables. Kick the thing until it works.
- Resist the urge to get frustrated and blame the computer when your code doesn't run. Computers are deterministic machines; it's almost always your fault. But that's OK! Your computer will give you error messages that describe what went wrong. Read them and try to understand them.
- When you don't know how to do something, google it. You'll be amazed by the solutions you'll find to do thing x if you google "python thing x". StackOverflow will often have high-quality answers to your problem.
- Resist the urge of using AI tools to do all the job or answer all your questions: doing so will often prevent you from learning from your mistakes. Remember that "the master has failed more times than the beginner has tried". There will be a class where you will learn how to use AI tools to help you in your programming.
- Learn keyboard shortcuts. Tab-complete in the shell and IPython/Jupyter!
- Remember Zed's sage wisdom:
- Practice every day.
- Don't overdo it. Slow and steady wins the race.
- It's alright to be totally lost at first.
- When you get stuck, get more information.
- Try to solve it yourself first.
 
Weekly take-home assignments will take the course schedule, reinforcing skills with exercises to analyze and visualize scientific data. Assignments will be given out on Wednesdays and will be due the following Wednesday.
TODO
The grade will be based on a final project that exercises the concepts learned in the class. The grading will be done for both the project delivery (notebooks, code, and datasets) and a presentation. Both the project and presentation will have the equal weight on the final grade.
The course consists of 15 lessons. As a class, it is taught as one double-class per week for 15 weeks, but the material can be covered at any pace. Each one of those classes will consist in a theory class, followed by a practical class where questions will be answered.
The classes will cover basic concepts in Python and will be taught using Jupyter Notebooks.
Lessons' previews are available as .ipynb files by clicking on the lesson numbers below.
| Lesson | Title | 
|---|---|
| 1 | Python, IPython, Packages, and Jupyter Notebooks | 
| 2 | Printing, Strings, Numbers | 
| 3 | Logic, Loops, Syntax, and datatypes | 
| 4 | Taking Input, Reading and Writing Files, Functions | 
| 5 | Numpy, Pandas and Matplotlib introduction | 
| 6 | Pandas Part I: Basic operations | 
| 7 | Pandas Part II: Data cleaning and wrangling | 
| 8 | Plotting with Matplotlib | 
| 9 | Pandas Part III: Group operations | 
| 10 | Statistics Packages | 
| 11 | Pandas Part III: Time Series | 
| 12 | Modules and Classes | 
| 13 | Concepts of clean coding | 
| 14 | AI assisted development | 
| 15 | Final assignment presentation |