Course number: 20253072
-
Direct link to course information
-
Feinberg Moodle
-
Location: Feinberg Room B
- Day 1 2025.03.27 9:00-12:00
- Day 2 2025.04.03 9:00-12:00
- Day 3 2025.04.10 9:00-12:00
- Passover
2025.04.24 9:00-12:00cancelled- Independence day
- Day 4 2025.05.08 9:00-12:00
- Day 5 2025.05.15 9:00-12:00
- Day 6 2025.05.22 9:00-12:00
- Day 7 2025.05.29 9:00-12:00
- Day 8 2025.06.05 9:00-12:00
- Day 9 2025.06.12 9:00-12:00
- Day 10 2025.06.26 9:00-12:00
There will be assignments after every lecture. You will submit them via GitHub. I'll explain the details during the lectures.
Each assignment and the project will have dead-lines. If you need to ask for extensions, do it up-front asking your TA. Make their life easier and ask specify the new dead-line you need.
Towards the end of the course you'll be asked to do a project. First you will need to submit a proposal for the project and when it is accepted then implement it. The project should be something that is useful for your studies or at least it is fun for you to make. Ask in the lab where you work what needs are there that you might implement as your final project. You can get inspiration from the projects listed here and the projects of the 2023 autumn semester or those of 2024 spring semester and 2024 autumn semester.
The idea of the project is that you write something that is going to be useful for you beyond the course. e.g. There is some manual work in your lab and this project will automate it. It can be also a tool to help you with your research. etc. It can also be useful in your private life. e.g. we had projects trying to register for visa applications at the USA embasy and we also had games.
You can even take an existing project and make some valuable improvements to that project. (e.g. one project from one of the previous courses).
How to submit your proposal?
-
Create a separate repository for the project. Its name should reflect the project: (e.g. Gene-Amplification-and-SNP-Analysis) and not the the course. If someone looks at this repository they should see it as a real application and not "some stuff you wrote just to get the grade".
-
The proposal should be the README.md file of the repository. If you need to include images or data files, those should be also included in the repository. It should be a description that will help any future visitor of the project to understand
- What does this project do?
- What kind of input data it expects and what kind out output the user might expect?
- The technicalities: How to download it, install the dependencies, run the tests, and run the project?
It would be nice if at the end of the README you mention that this was written as part of the course and link to the course repository.
We understand that the project and thus the description might evolve during the implementation. That's fine. You can update the README with the new information. In the proposal we would like to see your understanding of the project before you start implementing it.
Before you submit it for approval it is recommended that you send it to another student and ask if the description is clear. If that student has any questions then you probably will need to update the README to answer those questions so the next person won't need to ask.
Once you are ready, open an issue on our repository linking to you project to get it approved.
Once the project is approved you will implement it in the same repository. Open a new issue when you'd like the project to be graded.
In addition to the lectures you will spend about 2-4 hours / week on the assignments and 20-40 hours on the project.
The actual time spent will greatly depend on your previous experience with programming in general and Python in particular.
The time you spend on the project will also depend on the availability of the data you work on. If you pick a project that you would want to do anyway then this is basically time you would spend anyway.
-
Each assignment counts as 5% (we will have 10 of them).
-
The project proposal is 15%.
-
The project is 35%.
-
The project is a requirement. Without that you won't get a passing grade.
During the course I'll use some of the slides that can be found here. These slides are publicly available and will remain on the web site after the course is over.
There are recording of this course from 3 years ago.
There are also recordings from the 2023 autumn semester.
There are also recordings from the 2024 spring semester.
You can watch those, but be also warned, this semester the order of the material will be different.
There are many more videos in my English-language YouTube channel. You are invited to check them out and to follow the channel.
Some of the material is also available in Hebrew. You can find them on my website and in my Hebrew-language YouTube channel. You are invited to follow that channel as well.
The default teaching language of WIS and of this course is English.
In writing please stick to English.
If and when we have one-on-one conversions I'd be happy to speak in Hebrew, Hungarian, Spanish, or Ladino as well.
You are expected to bring your own computer to the lectures.
There is no need to install anything up front. We'll do that during the lectures.
Login to Moodle and you should be able to see the video recordings on the right hand side.
- Self introduction
- Overview of the course
- Programming
- Version control
- GitHub
- GitHub pages
-
Create web site for yourself using GitHub pages. Remember to use the repository name
USERNAME.github.io. Get ideas from the pages of the students in the previus courses. -
Create a separate public repository for all the assignments of the course. (e.g. call it
python-course-assignments)- Create a folder called
day01 - In the folder create a program that will print "Hello World!"
- Create a folder called
Once they are ready open an issue on the GitHub repository of the course. The title of the issue should contain your full name and name of the assignment e.g. "Day1 by Foo Bar", in case your name is Foo Bar. In the issue include the link to the site, the link to the repository of the site, and the link to the repository of the assignment.
Dead-line: April 1, 23:00 April 3, 23:00
-
Biopython project, issues.
-
Computer architecture (memory vs hard-disk), filesystem
-
Continue the First Steps chapter (till Floating point limitations)
-
Someone should have mentioned in class that I mistakenly let co-pilot write
weightinstead ofwidthand that's why it wanted to compute my BMI intead of the area of the rectangle.
-
In the repository of your assignments create a folder called
day02and put your solutions in that folder. -
Write a program called
circle.pythat will ask the user for the radius of the circle and will print the area and the circumeference of the circle. -
Write a program called
rectangle.pythat will ask the user forheightandwidthand calculate the area and the perimeter of the rectangle. -
You will have to use the
int()or thefloat()function to convert tha data you received from the user to anintorfloatin your program. -
Once you are done, open an issue on our repository in whch the subject includes your full name and the number of the assignment so the TAs will be able to handle it. Include a link to the repository of your assignments.
Dead-line: April 8, 23:00
Covered chapters
- End of "First steps"
- "Second steps"
- Numbers
- Open issues on the repository of the web site of 2 students. In order to make sure every student receives issues, first open for student who do not yet have issues or only have 1 issue opened. In the issue write down what you like and what improvement you'd like to see. Mention the TAs and my by including our GitHub user ideas with an
@mark. E.g.@szabgabwill notify me about the issue. - When you receive an issue, comment on it. Decide if you'd like to implement the suggestions and one you implemented it or if you decide you don't want to do that, close the issue.
- The goal here is to have some experience with GitHub issues and to improve your web sites.
- I recommend you collaborate with each other. Feel free to pick a random student and ask her/him to work on this together in-person or via a zoom session.
In a folder called day03
- Copy the
circle.pyandrectangle.pyfromday02today03and change both of them to get the values one the command line (usingsys.argv) intead of waiting forinput.
Dead-line: April 23, 21:00
Covered chapters
- Comparison and Boolean
- Strings
- Loops
Dead-line: May 15, 21:00
Covered chapters
- Formatted strings
- Lists
- Tuples
Dead-line: May 22, 21:00
Covered chapters
- Files
- YAML
- JSON
- beginning of the Biopython chapter
Dead-line: June 4, 21:00
Covered chapters
- Dictionaries
- Sets
- Code-reuse
- Functions
Dead-line: June 8, 21:00
Covered chapters
- Modules
- Regular Expressions part 1 and 2
- Take one of your solutions to one of the earlier assignments. Split up the code into functions. Move the functions to a module. Submit the new script and the module.
- parse hours log file and create report
Dead-line: June 15, 21:00
Covered chapters
- Regular Expressions part 3
- math, sys, os, pathlib, shutil, time, datetime, subprocess, argparse
- Testing Demo
- A few words about classical machine learning.
- Take one your earler solutions. Convert the code into functions and move the functions to a separate module.
- Write documentation for the non-I/O functions with examples and run doctest.
- Write tests using assert and use
pytestto run the tests.
Dead-line: June 22, 21:00
For detailed desciption see above.
Project proposal dead-line: June 12, 21:00
Project submission dead-line: July 3, 21:00