Syllabus
“I liked the fact that we were able to work very freely and independently on our problem as a group, but that we were always able to make appointments with Prof. Wagner at very short notice if we had problems or questions. This gave me the impression that we were working we were working with the lecturer on the problem and finding the best solution rather than blindly choosing the first solution that came along. In my opinion, working independently on a complex problem is the most important skill that I improved with the help of the project.”
“The support I received throughout the project was particularly good, as was the opportunity to deal with topics that were not previously available at the university, but which can be extremely important for your professional life.” [more]
Basic information
- Title: Digital-Work-Projekt-B: Bachelorprojekt aus der Fächergruppe Wirtschaftsinformatik
- Credits: 6 ECTS (180h)
- Degree program: Bachelor’s in Information Systems, International Information Systems Management, and Applied Computer Science. Participation is also possible for degree programs such as Software Systems Science or Computing in the Humanities (Master’s, module group A2) (after consultation with the examination board)
- Format: In-person sessions at the beginning, followed by group work, and a code review session towards the end.
- Dates, rooms, and tasks: Listed on the Main page
- Registration: If you would like to participate, please attend the introductory session. Details regarding registration and topic assignment will be announced during this session.
- Prerequisites: We recommend participating in the project after the 3rd semester. The following courses are required: Inf-Einf-B Einführung in die Informatik or DSG-EiAPS-B Einführung in Algorithmen, Programmierung und Software, and DSG-JaP-B Java Programmierung.
In software development, open-source development environments and open-source workflows are gaining importance and are embraced by large tech companies. Git plays a central role in this context. Since its release in 2005, the market share of the decentralized and collaborative version control system has gained a market share of approximately 90%. As a result, Git-based platforms such as GitHub and GitLab have largely displaced alternatives like SourceForge (Subversion), and even large projects like the development of the Windows operating system have migrated to Git. Today, Git is an integral part of scaling extensive and highly distributed software development projects.
Against this background, the goal of this project is to understand and use Git-based open-source workflows and development environments (e.g., pull requests, forks, and continuous integration). Within the framework of an existing open-source project, CoLRev, selected functionalities will be developed and contributed in small teams. The sub-projects will be presented in the first session of the course, and preferences for topics will be taken into account when forming groups.
At the beginning of the project, three block events are planned: (1) an overview of the open-source project and the sub-projects with subsequent topic assignment, (2) an introduction to Git, and (3) an introduction to Python. The subsequent work phase will be accompanied by targeted code markers for orientation in the project and by offering hacking sessions in groups. The code review session will take place in the last weeks of the lecture period. At that time, a completed sub-project will be reported, the results of which have been incorporated into the overarching open-source project (merged or advanced pull request).
Instructor
My name is Gerit Wagner, and I am your instructor. I enjoy coding, solving programming puzzles, and building tools that are useful for others. In this project, I invite you to contribute to one of my most significant packages: CoLRev.
Gerit Wagner
Assistant Professor of Information Systems
Otto-Friedrich-Universität Bamberg
I use the Calendly tool to schedule meetings. It gives you an up-to-date overview of available slots in my schedule, and your reservations are immediately added to my calendar (no need to go back and forth via e-mail). We can meet in person or online, whatever works best for you.
Goal and learning objectives
- Use Git and GitHub to develop code in small teams
- Write Python code and contribute to a Python package
- Familiarize with open-source development as a contributor and maintainer
Course outline
The detailed course outline is available on the main page. We cover the following sessions and work tasks:
Week 1, Session 01: Organization and Topics
- Introduction to the course and project topics.
- Tasks: Sign up for the VC course room, create a GitHub account, form groups, and set up a development environment.
Week 2, Session 02: Introduction to Git
- Overview of Git and version control practices.
- Tasks: Set up your programming environment as per CoLRev documentation.
Week 3, Session 03 and 04: Introduction to Python (I, II)
- Basics of Python programming and advanced Python concepts related to Python package development and CoLRev.
- Tasks: Contribute code to a fork, create branches, and synchronize with upstream.
Week 5, Session 05: Best Practices
- Discussion on coding standards and best practices in open-source development.
Weeks 6-11: Individual Hacking Sessions
- One-on-one or group sessions to address specific issues and progress.
- Tasks: Create and submit pull requests, code evaluation.
Week 12: Session 06: Code Review Session
- Comprehensive review of submitted code.
- Tasks: Implement feedback from the code review.
Assessment and grading criteria
Code: Functionality
- Correctly implementing the specified features and functionalities, validating input parameters, and handling edge cases appropriately.
- Unit tests covering critical parts of the code.
Code: Quality
- Adherence to Python coding standards, as suggested by pylint and the pre-commit hooks defined in the repository.
- Documentation, with detailed docstrings for all functions and classes, and a README explaining the setup, and usage.
- Appropriate code structure and readability, with a logical organization of code into modules and functions, use of meaningful variable and function names, and clear and concise comments explaining complex sections.
Process: Open-Source Practices
- Proper use of Git conventions for commit messages and branching.
- Clear and descriptive pull requests with proper documentation.
- Properly addressing and incorporating feedback from code reviews.
- Code review: Participating in the community by reviewing others’ code and providing constructive feedback.
- Ability to explain and defend your code.
- Responding to and incorporating feedback from the review session.
- Maintaining an active and professional presence in project discussions and issues.
Deliverables are summarized on the main page. Each deliverable is an opportunity to demonstrate your proficiency with Git, Python, and CoLRev.
Teaching approach
-
Complex Skill Development: The project focuses on teaching complex skills necessary for modern software development. This includes tackling challenging problems, collaborative coding in teams, and managing a complex development environment using tools such as Python, Git, Continuous Integration, Testing Environments, and Code Quality Tools. To ensure a rich learning experience, we support students throughout the process by asking the right questions and providing the necessary input without removing the inherent challenges.
-
Real-World Impact: We aim to empower students to make a meaningful impact by contributing to a real-world, publicly accessible Python package. This hands-on experience not only enhances technical skills but also provides a sense of accomplishment and relevance. Additionally, students can add this valuable experience to their CV, showcasing their practical contributions and teamwork skills to potential employers.
-
Diversity, Equity, and Inclusion: We are committed to creating a safe and inclusive learning environment where all students feel respected and valued. We create a positive learning atmosphere, encouraging questions and contributions from everyone. We encourage diversity and actively work to ensure that every student has equal opportunities to succeed and contribute.
-
Transparent Evaluation and Improvement: Our evaluation criteria, course evaluations and improvement efforts are documented transparently. This ensures that students are aware of how their work is assessed and how the course evolves based on feedback and ongoing refinement efforts. In addition, we develop peer-reviewed teaching materials to solicit feedback from educators outside our program.
Materials
- Slides and notebooks are available on the sub-pages.
- Another important resource is the documentation of CoLRev, in particular the environment setup and the package development pages.
References
Hogbin Westby, E. J. (2015). Git for teams: a user-centered approach to creating efficient workflows in Git. O'Reilly Media.
Luciano, R. (2015). Fluent Python: Clear, Concise, and Effective Programming. O'Reilly Media.
Wagner, G., and Thurner, L. "Rethinking How We Teach Git: Recommendations and Practical Strategies for the Information Systems Curriculum". Journal of Information Systems Education, 36(1).