cub-sdt-104-2024 / tasks

This repository hosts a task tracker for all projects.
1 stars 0 forks source link

Scientific Python Course Projects

This repository hosts information for the students enrolled into Scientific Programming with Python course that is read at Constructor University Bremen in fall 2024.

The lab component of the course includes weekly assignments, targeted at the students who are new to Python. However, those who already have some experience with Python may find the weekly assignments not challenging enough. If this case there is an option of working on bigger course projects instead of the weekly assignments.

Summary

The goal of the course project is to build a relatively complex application, working together with fellow students and using common software development practices, such as code reviews, unit tests, etc. We have prepared a few application ideas, however, you are free to suggest your own one.

Your work on a course project will be split into three phases with different kinds of tasks and teamwork. See the details on the project phases below.

A course project has the same weight in the final score as weekly assignments (33%). Completion of every task in the scope of a project will provide some "credits", and the more credits you gain, the better. See the details on the grading below.

Labs Coordinator

The work on the course projects is coordinated by Dmitry Barashev.

How to apply

If you want to opt in to the course projects, please send an email with your name and GitHub username to Dmitry Barashev. Shortly after that you will receive an email with the invitation link into a GitHub organization named cub-sdt-104-2024. To accept the invitartion you will have to click the invitation link. Please make sure that your email address in your GitHub account is a working one and that you check it regularly.

Details

The work on the course project will be split into three phases.

A few terminology remarks: a project is a repository where a student or a team of students submit their code. A project goal is to implement an application (shortly, an app). Every app is described by a list of tasks or features that are needed to be implemented. There may be many projects that implement the same application.

Applications

We have a choice of apps: Hanabi game bot, Expense Accounting Bot, Language Learning Bot, Tangled Tracks Sherlock and Web site bot fighter. You are free to suggest your own app ideas, provided that they are of the approximately the same level of complexity. If you submit your own app idea, please be prepared for some work on writing tasks, components and requirement specifications.

Phase 1

The goal of this phase is to learn/refresh the basics of programming in Python, work with strings, lists, maps, libraries for parsing command line arguments and using input/output. Phase 1 starts shortly after the start of the course and lasts approximately until the end of September. This work is standalone, there will be no teams during this phase.

There will be a list of required tasks for every available application (as of Sep 19, there are just two tasks, but more are expected, up to 3-4 tasks for every app). Completion of every task will give you a few credit points, depending on the task complexity. A task is considered as completed if a pull request with the working task code and passing unit tests is submitted before the submission deadline, and the code review ends with "LGTM" (approval) from one of the teachers. The end of the code review may happen after the submission deadline.

You are free to suggest your own tasks, however, they will be counted as optional and will provide less credit points.

Phase 2

The goal of this phase is to develop relatively complex data structures and polymorphic components. Phase 2 starts in early October and lasts approximately until the early November. During this phase you will work in teams of two students.

There will be a list of the required components for every app. A component is a bigger unit of work, and you will have a lot of freedom with respect to the component implementation. Completion of every component will give you a few credit points, depending on the component complexity. A component is considered as completed if pull requests implementing its aspects are submitted, along with the passing unit tests, before the submission deadline, and the code review ends with "LGTM" (approval) from the teammate and one of the teachers. The end of the code review may happen after the submission deadline.

You are free to suggest your own components, however, they will be counted as optional and will provide less credit points.

In the beginning of this phase you will have to choose team-mates and merge your projects, probably deciding whose code from the Phase 1 you will want to keep.

Phase 3

The goal of this phase it to build a complete application with user-visible interface on top of their work completed in the first two phases. Phase 3 starts in November and runs until the end of the course. During this phase you will work in the same teams as during the Phase 2.

There will be a set of requirement specifications for every app. The specification will describe the user scenario, and you will decide how it should be implemented. Every implemented specification will give you a few credit points, depending on its complexity and its quality.

The quality will be assessed at the end of the phase during an online face-to-face meeting where both the App and pull requests will be presented to the teachers. During the process of working on the app the team members are expected to do mandatory code reviews for each other.

Grading

We will calculate the total credit points earned from the lab work. The final score for the labs will be determined by the ratio of earned credits to available credits.