Open labarba opened 7 months ago
Example JupyterBook for Python Camp: https://gwu-libraries.github.io/python-camp/intro.html
Michael proposed a list of workshops on a Google spreadsheet.
It is titled EMSE 6992 / SEAS 6800 - Management of Research and Software Development in Python indicating that this is a WIP for a credit-bearing course.
Converted Google sheets content to Markdown, and pasted below.
Module Number | Module | Class Number | Topics | Learning Objectives |
---|---|---|---|---|
1 | Local Development | 1 | Course Introduction; Python Language Review; Python Notebooks w/ Google Colab | Learn about the course and course tools Review Python notebooks (specifically Google Colab) as a tool for research and software development |
1 | Local Development | 2 | Local Development Tools: Text Editor (VS Code), Command Line Computing; Virtual Environments w/ Anaconda, Package Installation Management w/ Pip; Jupyter Notebooks | Download and install and become familiar with local development tools like a text editor Create and activate virtual environments to manage installations of different versions of the Python language Install and manage code dependencies using pip, and use a requirements file to list package dependencies |
1 | Local Development | 3 | Version Control w/ Git; Code Repository Management | Understand version control workflow, including staging, committing, pushing, and pulling Practice using Git to save incremental versions of your code, and upload them to GitHub |
2 | Code Maintenance and Quality Control | 4 | Code Simplification; Refactoring; Code Organization and Modularity | Learn how to organize your code in a modular way Simplify your code to remove duplication and improve maintainability |
2 | Code Maintenance and Quality Control | 5 | Automated Testing; Continuous Integration w/ GitHub Actions | Implement automated tests and discuss their benefits Run automated tests on a Continuous Integration server |
2 | Code Maintenance and Quality Control | 6 | Developer Collaboration w/ GitHub; Pull Request Workflow; Code Reviews | Practice collaborating in the open with other researchers and developers Understand pull request workflow, which provides an opportunity for automated checks and collaboration |
3 | Open Science | 7 | Authoring, Releasing, and Maintaining Python Packages | Publish a package to the PYPI, so others can install and use your code. Use GitHub Actions to automate the package release process |
3 | Open Science | 8 | Package Documentation, Docstrings, and Documentation Site; Documetnation Site Publishing Tools (Jupyter Book vs Quarto); Publishing to GitHub Pages) | Document your code, and publish a documentation site to help others understand how to use it Automate the documation site generation process using autodoc tools |
3 | Open Science | 9 | Scholarly Writing and Open Science; Article Structure; Citations; Journal Submission Process; Quarto Manuscript Template; Reproducible Research | Familiarize yourself with scolarly article publishing tools and workflow Publish your scholarly research in the open |
4 | Production Software | 10 | User Facing Applications w/ Flask, Part I (Routing and Views) | Develop user-facing web application software |
4 | Production Software | 11 | User Facing Applications w/ Flask, Part II (Authentication and Datastores) | ... continued |
4 | Production Software | 12 | Server Management; Deploying Applications to Production | Practice deploying research and application code to a user-facing production server |
N/A | [Group Projects] | 13 | [Project Working Session] | |
N/A | [Group Projects] | 14 | [Project Presentations] |
I worked with Jupyter AI to generate more detailed LOs for each module:
Here are short descriptions for Michael's proposed modules (generated with get-3.5 using the LOs above)
This course module focuses on utilizing Jupyter notebooks, such as Google Colab, to write and execute Python code for research and software development. Students will demonstrate proficiency in Python language essentials, including variables, data types, loops, and functions, as well as analyze and troubleshoot Python code in Jupyter notebooks. Collaboration with peers in sharing Jupyter notebooks, providing feedback on Python code, and evaluating the benefits of using Jupyter notebooks for projects will be emphasized. Students will also develop and present a project to showcase their understanding of course concepts and critically assess the impact of Python language essentials and Jupyter notebooks in computer science.
This course module will guide you through setting up a coding environment by downloading and installing a text editor and creating virtual environments using Anaconda. You will learn how to activate and manage virtual environments, install code dependencies using pip, create requirements files, and utilize Jupyter Notebooks for interactive coding and data visualization. Additionally, you will gain skills in effectively managing package installations within virtual environments using pip.
In this module, students will learn how to set up a Git repository for version control and effectively track changes in code using the staging and committing process. They will also explore Git commands to push code to a remote repository on GitHub, employ branching strategies to manage different versions of code, and collaborate with peers by pulling and merging changes from a shared repository. Additionally, students will develop the skills to troubleshoot common Git errors and conflicts and evaluate the importance of version control in software development projects.
In this module, you will learn how to identify and refactor areas in code to enhance readability and maintainability. You will practice simplifying complex logic, removing duplicate code, and applying principles of code organization to improve modularity and reusability. By developing a structured approach and using tools effectively, you will be able to organize code into modules for scalability and evaluate the impact of code simplification on software quality and efficiency.
This course module will focus on the benefits of implementing automated tests in software development projects, teaching participants how to write and execute automated tests on a Continuous Integration server. Students will learn to analyze test results, collaborate with team members to troubleshoot issues, and evaluate the impact of Continuous Integration on the development process. By the end of the module, participants will be able to develop a plan for integrating automated testing into a Continuous Integration workflow.
Students will learn how to collaborate with researchers and developers in an open environment, using the pull request workflow to propose changes and provide feedback. They will implement automated checks to maintain code quality and engage in code reviews to enhance their peers' work. Through GitHub, they will apply version control principles and communicate effectively with team members using features like issues, comments, and notifications.
In this course module, students will learn how to develop a Python package ready for publication on PYPI and implement GitHub Actions to automate the release process. They will demonstrate their ability to release a Python package to PYPI for public use and evaluate the importance of maintaining and updating packages for long-term usability. Additionally, students will analyze the benefits of using version control systems like Git for package development and create documentation to enhance usability for other users.
This course module focuses on the importance of writing clear and concise documentation for code readability and maintainability. Participants will learn how to create a documentation site using tools like Jupyter Book or Quarto, and publish it to GitHub Pages for wider accessibility. By utilizing autodoc tools, students will automate the generation of documentation for code elements, demonstrating proficiency in documenting code and publishing a documentation site for a software project. Additionally, they will evaluate and select appropriate tools for publishing documentation based on project requirements and audience needs.
This course module will cover the key components of scholarly writing, including formatting, tone, and language, to help students enhance their academic writing skills. Students will learn how to structure an academic article effectively by understanding and implementing the introduction, methods, results, and discussion sections. Additionally, students will be guided on applying correct citation styles, selecting appropriate journals for submission, and utilizing the Quarto Manuscript Template for formatting research papers according to industry standards.
In this course module, students will learn how to utilize Flask to create routes and views for user-facing applications. They will demonstrate proficiency in creating dynamic routes and views, as well as designing user-friendly interfaces for web applications using Flask. Additionally, students will learn how to implement error handling and redirection, analyze and troubleshoot routing and view-related issues, evaluate best practices for structuring routes and views, and collaborate with peers to peer-review and provide feedback on Flask applications.
This course module will focus on designing and implementing user authentication functionality using Flask and Flask-Login. Participants will learn how to create and manage user accounts, including registration, login, and logout processes, in a Flask application. Additionally, they will explore integrating Flask applications with relational databases, implementing secure data handling techniques, developing RESTful APIs, and testing and debugging user-facing applications for functionality and security.
This course module will cover the necessary steps to deploy research and application code to a user-facing production server. Participants will learn how to set up and configure a server environment for hosting research and application code, as well as troubleshoot common issues that may arise during deployment. Additionally, students will explore security measures, performance metrics, and develop a plan for maintaining and updating code on a production server.
@s2t2 posted on Slack:
Current progress for the proposed workshop list is here (in the "lai-workshops" sheet): https://docs.google.com/spreadsheets/d/1RChK3lSHD7TjZ8euWfIWVaxReYFHWuI7wh2LdgGe7PQ/edit?gid=806894323#gid=806894323
Status: FALL
Description: Install and configure tools to help you manage and develop Python programs like a professional. Attendees will become familiar with development tools such as a text editor and command line application.
Learning Objectives:
Required Software:
Offerings and Desired Dates: 3 (Sept, Oct, Nov)
Presenter(s): Michael Rossetti
Audience: All GW community
Status: FALL
Description: Demystify the version control process and learn how to manage and collaborate on coding projects with other researchers and developers. Attendees will become familar with Git and GitHub.
Learning Objectives:
Required Software:
Offerings and Desired Dates: 3 (Sept, Oct, Nov)
Presenter(s): Michael Rossetti
Audience: All GW Community
Status: FALL
Description: Improve the maintainability and quality of your code. Attendees will become familiar with code modularity and organization principles.
Learning Objectives:
Required Software:
Offerings and Desired Dates: 1 (late Sept)
Presenter(s): Michael Rossetti
Audience: All GW community
Status: FALL
Description: Improve the maintainability and quality of your code. Attendees will become familiar with automated testing.
Learning Objectives:
Required Software:
Offerings and Desired Dates: 1 (early Oct)
Presenter(s): Michael Rossetti
Audience: All GW community
Status: FALL
Description: Share your research with the world. Attendees will publish a scholarly article online and discuss the journal submission process.
Learning Objectives:
Required Software:
Offerings and Desired Dates: 3 (Sept, Oct, Nov)
Presenter(s): Michael Rossetti, Lorena Barba?
Audience:
Status: SPRING
Description: Write your own Python package, and share it with the world. Attendees will publish their own package to the Python Package Index (PyPI).
Learning Objectives:
Required Software:
Offerings and Desired Dates: 1 (late Jan)
Presenter(s): Michael Rossetti
Audience: All GW community
Status: SPRING
Description: Document your Python code and publish a documentation site so others can learn how to use your code. Attendees will publish a documentation site for a Python package.
Learning Objectives:
Required Software:
Offerings and Desired Dates: 1 (early Feb)
Presenter(s): Michael Rossetti
Audience: All GW community
Status: SPRING
Description: Get your code in the hands of end users. Attendees will host a Python application on a user-facing production server.
Learning Objectives:
Required Software:
Offerings and Desired Dates: 1 (late Feb)
Presenter(s): Michael Rossetti
Audience: All GW community
Fall 2024 Schedule:
See also: https://library.gwu.edu/events?f%5B0%5D=series%3A365
First, essential topics to develop teaching materials for:
Ideas:
Scanned Documents.pdf