605.256.8VL - Modern Software Concepts in Python

Computer Science
Fall 2024

Description

This course will introduce you to a wide range of advanced topics in Python; the skills most developers don’t learn until they’ve been in the workforce. The material has been designed to expose you to common techniques and tools you'll be able to exercise immediately. It is intended for students who have complete 605.206, Intro to Python who are looking to advance their skills by solving problems across a wide variety of topics: web programming, databases, concurrent programming, cloud computing, machine learning, cyber security, and even quantum computing. You’ll be introduced to the most current and most popular technologies including: BeautifulSoup, PyCharm/VSCode, Linux CLI, Docker, Git, AWS, and Flask, as well as a range of Python libraries including: Dask, Dash, Pylint, Pytest, Sphinx, Psychopg3, Sqlalchemy, SciPy, SciKit-Learn, regex, Networkx,¬ numpy, Pytorch, Spacy, Streamlit, Qiskit, and more! Each concept is accompanied by real code samples that will be explained in-detail and the assignments will present you with interesting scientific problems to enable you to practice your Python skills for the purpose of solving real, complex problems. The course is textbook-free and provides several hand-chosen readings to supplement the lecture materials. Upon completion of the course, you should have the knowledge, skills, and tools to take a given problem and comfortably execute a solution using Python and a supporting ecosystem of technologies. Not for graduate credit.

Instructors

Profile photo of Liv d'Aliberti.

Liv d'Aliberti

Default placeholder image. No profile image found for Joe Kovba.

Joe Kovba

jkovba1@jhu.edu

Course Structure

The Course Outline has been designed to help provide a high-level overview of the schedule for the entire semester. Modules typically run for a period of 7 days beginning at 12:00:00 AM EST on Wednesday morning and end at 11:59:00 PM EST on Tuesday night. Please note we’ll make every attempt to open most Modules 24 hours in advance in an effort to provide you with as much flexibility as possible. All modules are of similar difficulty / involvement levels. All assignments have been carefully designed so that they are “doable”, don’t worry!



Module

Dates

Module Title

Assignments

Module 1

Wed 05/29/24–Tue 06/04/24

Web Scraping

·       Module 1 Readings

·       Module 1 Slides Review

·       Module 1 Lecture / Readings Quiz

·       Module 1 Assignment

Module 2

Wed 06/05/24– Tue 06/11/24

Web Applications

·       Module 2 Readings

·       Module 2 Slides Review

·       Module 2 Lecture / Readings Quiz

·       Module 2 Assignment

Module 3

Wed 06/12/24– Tue 06/18/24

Databases

·       Module 3 Readings

·       Module 3 Slides Review

·       Module 3 Lecture / Readings Quiz

·       Module 3 Assignment

Module 4

Wed 06/19/24– Tue 06/25/24

Testing & Documentation

·       Module 4 Readings

·       Module 4 Slides Review

·       Module 4 Lecture / Readings Quiz

·       Module 4 Assignment

Module 5

Wed 06/26/24– Tue 07/02/24

Code Assurance & Security

·       Module 5 Readings

·       Module 5 Slides Review

·       Module 5 Lecture / Readings Quiz

·       Module 5 Assignment

Module 6

Wed 07/03/24– Tue 07/09/24

Cloud-native Development

·       Module 6 Readings

·       Module 6 Slides Review

·       Module 6 Lecture / Readings Quiz

·       Module 6 Assignment

Module 7

Wed 07/10/24– Tue 07/16/24

Cloud Computing

·       Module 7 Readings

·       Module 7 Slides Review

·       Module 7 Lecture / Readings Quiz

·       Module 7 Assignment

Module 8

Wed 07/17/24– Tue 07/23/24

Data Preparation & Statistics

·       Module 8 Readings

·       Module 8 Slides Review

·       Module 8 Lecture / Readings Quiz

·       Module 8 Assignment

Module 9

Wed 07/24/24– Tue 07/30/24

Data Preparation & Models

·       Module 9 Readings

·       Module 9 Slides Review

·       Module 9 Lecture / Readings Quiz

·       Module 9 Assignment

Module 10

Wed 07/31/24– Tue 08/06/24

Data Visualization

·       Module 10 Readings

·       Module 10 Slides Review

·       Module 10 Lecture / Readings Quiz

·       Module 10 Assignment

Module 11

Wed 08/07/24– Tue 08/13/24

Machine Learning Operations (MLOps)

·       Module 11 Readings

·       Module 11 Slides Review

·       Module 11 Lecture / Readings Quiz

·       Module 11 Assignment

Module 12

Wed 08/14/24– Tue 08/20/24

Concurrency & Scale

·       Module 12 Readings

·       Module 12 Slides Review

·       Module 12 Lecture / Readings Quiz

·       Module 12 Assignment

 

Course Topics

Module #

Module Title

Module Overview

Module Learning Objectives

Teaching Strategies

Learning Activities and Assessments

Module Resources

1

Web Scraping[GR1] [DLG[U2] 

We begin by welcome to the course and introducing the lecturers.

 

We then establish course expectations and move through the syllabus, course outline, office hours, grading policy, and course delivery tools.

 

Next, we discuss web scraping at a high level and teach handling URLs in Python with urllib3.

 

Afterwards, we begin a discussion of reading data scraped from the web with built-in string methods and regex string methods.

 

We then conclude with a discussion of BeautifulSoup to interact/parse HTML.

 

An extension (not tested) into mechanicalSoup to automate work carried out using BeautifulSoup is offered.

By the end of this module, you will be able to:

1.1 – Course Understanding: Maintain a clear understanding of our course structure and key documentation.

1.2 –  URL Handling: manage http request-responses in python with urllib3

1.3 – Data Extraction: Extract data from web pages and utilize regular expressions

1.4 – HTML Object Parsing: Apply BeautifulSoup for effective data scraping

1.5  - Github Version Control: Store and version control assignment code.

1A: Introduction to Web Scraping (1.1-1.4) – a voiceover PowerPoint presentation.

 

1B: Real Python (1.2-1.4) – Select readings

 

1C: Github Version Control (1.5) – Instruction setup guide.

Assessment

·      Students complete a web scraping assignment that requires them to pull data from grad cafe, search for necessary variables, and store data as JSON files, and then upload to Github. (1.1-1.5)

·      Students complete a short quiz covering their understanding of course policy. (1.1)

·      Students complete a short quiz covering their understanding of web scraping in python. (1.2-1.4)

https://realpython.com/python-web-scraping-practical-introduction/

 

https://realpython.com/beautiful-soup-web-scraper-python/

 

Github Version Control Guide

2

Web Applications[GR3] [DLG[U4] 

We begin by discussing web applications, server-client architectures, HTTP request-response, and static vs dynamic applications.

 

Next, we discuss building web applications with Flask.

 

Afterwards, we provide an example of deploying web applications on Amazon Web Services.

 

An extension (not tested) into Flask architecture tool, Blueprint is offered in closing.

2.1 – Web Application Architecture: Gain a clear understanding of the language-agnostic underlying requirements of web application systems.

2.2 – Web Application Construction: Build web applications in python using flask, add HTML templates, JavaScript, and CSS files.

 

2.3  – Local Web Application Testing: Test / stage applications locally, build multiple page websites.

2.4  – Cloud Web Application Deployment: Learn to deploy web applications using cloud services.

 

2A: Introduction to Web Applications (2.1-2.4) – a voiceover PowerPoint presentation.

 

2B: Real Python (2.1-2.3) – Select Readings

 

2C: Student AWS account (2.4) – Instruction setup guide.

Assessment

·      Students complete a web application development assignment that requires them build a personal website using flask, and then deploy the application to a Student AWS account.  (2.1-2.4)

·      Students complete a short quiz covering their understanding of web application development and deployment. (2.1-2.4)

https://realpython.com/flask-project/

 

https://realpython.com/flask-javascript-frontend-for-rest-api/

 

AWS Account Instructions

3

Databases[GR5] [DLG[U6] 

We begin by reflecting upon the application data layer – looking at the simplified layers used in M1 and M2.

 

We then cover different application tiers: presentation, application, and data. We discuss the data layer and cover the need for databases.

 

Next, we cover relational databases, structuring data tables, setting up a local PostgreSQL database, and loading JSON files into a relational database.

 

Afterwards, we use Psycopg3 to access relational databases and carry out SQL commands to search the database.

 

An extension (not tested) into SQLAlchemy2 for pure SQL development.

 

3.1 – Application Tiers: Gain a clear understanding of the typical tiers that make up the architecture of applications.

3.2 – Relational Database Setup: learn to set up, load data, and access a local relational database.

3.3 – Search Databases for Relevant Data: Use Psycopg3 to search and manipulate relational databases in Python.

3.4 – Git Branching: Learn to develop in partnership through branching, merging, and commit history.

3A: Introduction to Databases (3.1-3.3) – a voiceover PowerPoint presentation.

 

3B: Real Python (3.1-3.3)  

 

3C: Git branching, merging, and commit demo.

Assessment

·      Students complete a database assignment that requires them to take that json data developed in week 1 and load it into a PostgreSQL database. The connect to it using Psycopg3 to answer analysis questions. Students must develop code using branches and show commit history. (3.1-3.4)

·      Students complete a short quiz covering their understanding of database development and deployment. (3.1-3.3)

https://realpython.com/prevent-python-sql-injection/

 

Git branching, merging, and commit demo.

4

Testing & Documentation

We begin by recognizing that to deploy reliable code that behaves in expected ways, we will need to perform testing.

 

We then cover unit tests and efficient unit test development with pytest.

 

Next, we cover how to parameterize unit tests, manage fixtures, and structure dependencies.

 

Afterwards, we cover categorizing tests and combining tests.

 

We move to generating code documentation with sphinx.

 

An extension (not tested) into hosting documentation is offered in closing.

4.1 – Handling and Testing Unexpected Inputs: Learn when an interaction could break code / cause unexpected behavior.

4.2 – Testing Code: Learn to address potential code issues by writing scalable, parameterized, unit tests in python.

4.3 – Documenting Code: Learn to create and release standardized documentation about your codebase.

 

 

4A: Introduction to Testing & Documentation (4.1-4.3) – a voiceover PowerPoint Presentation.

 

4B: Real Python (4.1-4.3)

 

4C: Sphinx exemplar walkthrough (4.3)

Assessment

·      Students develop a pygame simulation and character development, then they test their game behavior using pytest. They then provide sphinx documentation for their application. (4.1-4.3)

·      Students complete a short quiz covering their understanding of test development and documentation. (4.1-4.3)

https://realpython.com/courses/python-sphinx/

 

https://realpython.com/pytest-python-testing/

 

Sphinx demo walkthrough / practice creation.

5

Code Assurance & Security

We begin by recognizing that code is written once and read many times. Therefore, having standardized, well-written code is important.

 

We then introduce linters to help automate the process of ensuring code is standardized. We teach pylint to match google code standard.

 

Next, we cover the need to consider code security performance. We discuss ways code in deployment could be manipulated to create unexpected behaviors.

 

We teach snyk as an emerging tool to help automate the process of considering code vulnerabilities.

5.1 – Importance of Standardized, Readable Code: Learn how and why writing code is a standardized way is important – consider several code standards.

5.2 – Automate Code Standards: Using linters to help test how closely your code matches appropriate standards.

5.3 – Code Security Vulnerabilities: Consider potential ways an adversary can manipulate your application’s source code.

5.4 – Security Evaluation Tooling: Learn how to use emerging tool, snyk to help automate code vulnerability testing.

5A: Introduction to Code Assurance & Security (5.1-5.4) – a voiceover PowerPoint Presentation.

 

5B: Real Python (5.1-5.2)

 

5C: Snyk Blog (5.3-5.4)

 

Assessment

·      Students extend upon their pygame simulation and character development, they must now also lint their code to 10/10 standards and test for code vulnerabilities with snyk. (5.1-5.4)

·      Students complete a short quiz covering their understanding of code assurance and security. (5.1-5.4)

https://realpython.com/courses/writing-cleaner-python-code-pylint/

 

https://snyk.io/blog/getting-started-snyk-for-secure-python-development/

6

Cloud Native Development

We begin by discussing the problems created when trying to deploy the same application into different environments.

 

We introduce docker as a way to seamlessly deploy applications anywhere through containerization.

 

We then discuss the structure of dockers key components: dockerfiles, images, containers, and dockerhub.

 

As an extension (not tested) into docker compose for multi-container applications is provided.

6.1 – Deploy Anywhere Code: How to separate your code from underlying system through virtualization.

6.2 – Containerization: Use docker to containerize applications, make creation repeatable through dockerfiles, and publish environment images to dockerhub.

6.3 – Standard Virtual Environments: Take advantage of pre-built base images for applications.

6A: Introduction to Cloud Native Development (6.1-6.3) – a voiceover PowerPoint Presentation.

 

6B: Git Connected Reading (6.1-6.2)

 

6C: Docker Reading (6.3)

 

 

Assessment

·       Students complete an assignment dockerizing their pygame simulation and character development application. They then deploy to cloud and make accessible from their website. (6.1-6.3)

·       Students complete a short quiz covering their understanding of cloud native development. (6.1-6.3)

https://levelup.gitconnected.com/dockerizing-a-flask-application-with-a-postgres-database-b5e5bfc24848

 

https://docs.docker.com/docker-hub/

 

7

Cloud Computing[GR7] [DLG[U8] 

We begin with a discussion of on-premises vs cloud / hybrid workflows and why cloud has become a powerful emerging construct for computing resource management.

 

We then introduce several cloud providers, and indicate that many of the fundamental capabilities are comparable.

 

Next, we focus in on application construction using AWS – focusing on interaction using Python’s boto3 library.

 

We end with a discussion of sagemaker, a pre-set Data Science environment offered by AWS.

 

An extension (not tested) into cloud resource/cloud spend management is provided.

7.1 – Deployment Decision Tradeoff: how to decide whether to deploy your application on-prem or in the cloud.

7.2 – Cloud Providers and Services: overview cloud providers and similar core offerings.

7.3 – Use Python to interact with cloud services: dive into boto3 for AWS interaction.

7.4 – Data Science in Cloud: introduction into SageMaker for Data Science development.

7A: Introduction to Cloud Computing (7.1-7.4) – a voiceover PowerPoint Presentation.

 

7B: AWS Reading (7.1-7.2)

 

7C: Real Python Reading (7.3-7.4)

 

 

Assessment

·       Students complete an assignment focused on cloud service interaction using boto3. (7.1-7.3)

·       Students complete a short quiz covering their understanding of Cloud Computing. (7.1-7.4)

https://aws.amazon.com/education/awseducate/

 

https://realpython.com/python-boto3-aws-s3/

8

Data Preparation & Statistics[GR9] [DLG[U10] 

We first discuss the need to structure aggregated data and prepare for analysis.

 

We then discuss data preparation for common use cases: database storage, model development, downstream applications.

 

We practice creating numPy arrays, and shaping, filtering, ordering, and aggregating using numPy.

 

We then move to using Pandas for tabular dataFrame data displays /organization of data.

 

We demonstrate how to retrieve, access, sort, and modify pandas object.

 

We end by discussing advanced dataframe/numpy array manipulation using pre-build methods from SciPy.

8.1 – Data Preparation: Using numPy to interact with with n-dimensional data.

8.2 – Data Manipulation: Using numPy for array shaping, filtering, ordering, and aggregating.

8.3 – Tabular Data Manipulation: create, retrieve, access, sort, and modify data using Panda DataFrames.

8.4 – Advanced Manipulation: Applying SciPy and NumPy functions to Panda DataFrames.

8A: Introduction to Data Preparation & Statistics (8.1-8.3) – a voiceover PowerPoint Presentation.

 

8B: Real Python Reading (8.1-8.3)

 

Assessment

·       Students complete an image-based data preparation and statistics assignment focused on developing deep understanding and familiarity with numPy for statistics. (8.1-8.3)

·       Students complete a short quiz covering their understanding of Data Preparation & Statistics. (8.1-8.3)

https://realpython.com/numpy-tutorial/

 

https://realpython.com/pandas-dataframe/

9

Data Preparation & Models[GR11] [DLG[U12] [DLG[U13] 

We extend upon our data preparation covered for statistics and data cleaning in M8, with a focus on model management.

 

We continue our discussion of advanced numPy, particularly focusing on indexing and slicing.

 

We then use scikit-learn to develop training / test sets as a needed pre-processing step.

 

Afterward, we extend our data preparation work to focus on text data / vectorization.

 

We then look at the complete process of model training pipeline development, with a systems design perspective.

 

We end with a discussion of model/data-enabled software development techniques. 

9.1 – Advanced Manipulation: Applying Numpy and scikit-learn for data preparation / model training setup.

9.2 – Text Data Preparation: Applying data preparation methods to text data.

9.3 – Model Training Pipelines: key steps in model training pipelines and how to organize / test model training code.

9.4 – Applications with Statistical Models: Testing software applications that include statistical models.  

9A: Introduction to Data Preparation & Models (9.1-9.4) – a voiceover PowerPoint Presentation.

 

9B: Real Python Reading (9.1-9.4)

 

Assessment

·       Students complete a text-based data preparation and models assignment focused on developing deep understanding and familiarity with numPy and tensors for model development. (9.1-9.4)

·       Students complete a short quiz covering their understanding of Data Preparation & Models (9.1-9.4)

https://realpython.com/lessons/indexing-and-slicing/

 

https://realpython.com/courses/splitting-datasets-scikit-learn-train-test-split/

 

10

Data Visualization

We start by discussing the need to deploy data visualizations to help with analysis and understanding.

 

We then look at common visualization library, MatplotLib.

 

We discuss MatplotLib object hierarchy, plots, subplots, figures, and then turn to services like chatGPT to automat MatplotLib code development.

 

Afterwards, we look at making plots interactive with plotly.

 

We end with an example of building data visualization applications in python with streamlit.

10.1 – Data Visualization Tools: Learn to build data visualizations with MatplotLib.

10.2 – Animated Data Visualizations: Use Plotly to build interactive data visualizations.

10.3 –Data Visualization Applications: Learn to build data visualization applications with streamlit.

 

10A: Introduction to Data Visualization (10.1-10.4) – a voiceover PowerPoint Presentation.

 

10B: Real Python Reading (10.1-10.4)

Assessment

·       Students complete a data visualization project that highlights how to visualize outputs from models using matplotlib, streamlit, and plotly. (10.1-10.4)

·       Students complete a short quiz covering their understanding of Data Preparation & Statistics (10.1-10.4)

https://realpython.com/python-matplotlib-guide/

 

https://realpython.com/python-dash/

11

Machine Learning Operations (MLOps)

We start by discussing the need to update, adapt, test, and redeploy model-based applications. We introduce the term MLOps to describe this process.

 

To fulfill this model deployment architecture, we introduce MLFlow, a popular MLOps tool.

 

We then introduce MLFlow Server, and cover model setup, data setup, model evaluation, logging, model registries, and model deployment.

 

We end with a conversation on data persistence – managing data storage, versioning, and determining when / what data to delete.

11.1 – MLOps Concepts: Learn to automate and simplify ML workflows and deployments.

11.2 MLOps Implementation: Learn MLFlow as a tool to carry out MLOps processes.

 

11.3 Data Persistence: Learn to manage data storage, versioning, and management.

11A: Introduction to Machine Learning Operations (11.1-11.3) – a voiceover PowerPoint Presentation.

 

11B: Medium Reading (11.1-11.2) – access copied /downloaded.

 

11C: AWS Data Persistence Reading (11.3)

 

Assessment

·       Students use their text model from week 10 and look at deploying it over MLflow to complete this assignment. (11.1-11.3)

·       Students complete a short quiz covering their understanding of Data Preparation & Statistics (11.1-11.3)

https://medium.com/analytics-vidhya/manage-your-machine-learning-lifecycle-with-mlflow-in-python-d678d5f3c682

 

https://docs.aws.amazon.com/prescriptive-guidance/latest/modernization-data-persistence/enabling-patterns.html

 

12

Concurrency & Scale

We start with a discussion of concurrency, parallelization, and threading.

 

We then put together an example of multi-threading, managing threads in larger application.

 

We next look at applications of concurrency to big data problems.

 

We introduce dask as a python tool to handle concurrency for big data.

 

We end with a discussion of thread safety.

12.1 Concurrency & Parallelization: Understanding of key concepts.

12.2 Concurrency and Big Data: Use Dask to manage concurrency in Python for big data problems.

12.3:  Thread Safety: Understand and mitigate race conditions in multi-threaded code.

12A: Introduction to Concurrency & Scale (12.1-12.4) – a voiceover PowerPoint Presentation.

 

12B: Real Python Reading (12.1-12.2)

 

12C: DataCamp Reading: (12.2-12.3)

 

Assessment

·       Students complete a multi-threading homework assignment over a large data statistic problem and then use dask to parallelize. (12.1-12.3)

·       Students complete a short quiz covering their understanding of Data Preparation & Statistics (12.1-12.3)

https://realpython.com/python-concurrency/

 

https://www.datacamp.com/courses/parallel-programming-with-dask-in-python

 

Course Goals

By the end of this course, you will be able to:

Efficiently acquire proficiency in new Python packages.

Textbooks

When building this course, we tried to use materials that would help reduce the cost to you, the students. This course does not require a textbook and is based on Readings that are freely available online, particularly (but not exclusively) from RealPython. The lecture slides loosely follow their material for a decent portion of the course and the weekly Readings provided on Canvas link to articles that were hand-selected to coincide with that week’s materials. If you’re interested in other useful online resources for Python, please let us know!
 

Required Software

We will make use of a few free tools in this course that are available for most hardware platforms:
Python 3.10+, Microsoft VS Code, JetBrains PyCharm, REPL, AWS Student Licenses.

There are 3 officially supported IDE’s for developing code in this course: PyCharm, VS Code, and REPL 
(replit.com). You can find instructions for downloading and installing the tool of your choice under the “Installing Python” section on Canvas under Module 1.

Student Coursework Requirements

It is expected that each module (inclusive of lecture time) will take approximately 9-12 hours per week to complete, on average; some may take more, and some may take less. This estimate also varies from student-to-student. Here is an approximate breakdown: Readings (~1-2 hours per week), Virtual Live Lectures (~2-3 hours per week), Quizzes (~0.5 hours per week), and Programming Assignments (~6-9 hours per week).

NOTE: if you begin to find a particular Module is taking well beyond the estimated 9-12, please be 
sure to reach out and contact us for help. Extra effort may be required some weeks, and learning to problem-solve your way through difficult software challenges is a core part of this class, but when you need a sounding board / help considering ways to solve, we are here to support you. Please reach out.

Grading Policy

Syllabus, Course Outline, and Office Hours Quiz (5%)

This syllabus, Course Outline, and Office Hours guide contain a lot of important information about how to be successful in this course. During Module 1 you will complete an open-book, untimed Syllabus, Course Outline, and Office Hours Quiz to help ensure you’ve caught the major themes of the course.

Weekly Quizzes (25%)

There will be a weekly Quiz to reinforce the concepts from that week’s Lecture and Assignment. The quizzes will focus more on specific facts from Reading and Lectures (as opposed to the Assignments which will give you more general experience with applying concepts). Questions with multiple choice, True/False, fill-ins, matching, short answer, etc. Quizzes will be 10 questions long, closed book, and students will have 60 minutes to complete them. If you are not happy with your grade, you will have the option to retake each Quiz once during the Module it was assigned. The higher of your two attempts will be taken as your final grade on the Quiz. Our hope is that you’ll be able to focus on learning the key concepts and not have to worry as much about the stress of test-taking. Feel free to refer to any relevant course materials in-between attempts, but please do not access them while taking the quiz.

 NOTE: Quizzes are auto-graded by Canvas to give a rough indication of how you performed on the quiz. The grade provided to you by the auto-grader may NOT accurately reflect your final score. ALL Quizzes

are graded MANUALLY after Attempts #1 and #2 have been taken OR after the due date has passed. This is to ensure that correct answers which are not caught by the auto-grader are properly scored. To let you know when the quizzes have been manually graded, you will receive a comment on your quiz which reads “Your quiz has been manually graded.” All Quizzes are graded manually before the end of the next Module. Please avoid questions regarding quizzes until they have been manually graded.

Assignments (70% of Final Grade Calculations)

Software development is an actively carried out process, and as such, we think that you should learn by acting as a software developer. All of our assignments are designed to feel like problems you might be asked at work – where we are your “Product Owners” and you are acting in the role of “Developer”. We’ll set a clear set of specifications for what we’re looking for, and your job will be to go build a product that meets the specifications. Grades will be determined upon the basis of how closely your code meets the product owner expectations. Here are the expectations roughly broken down by grade percentage:

 

 

Excellent

(90-100)

Good

(80-89)

Satisfactory

(70-79)

Unsatisfactory

(70>)

Program Correctness

60%

Code compiles successfully and produces correct results for all inputs. The program does not produce any runtime issues and makes use of relevant concepts from the module

Code compiles successfully and produces mostly correct results for all inputs. The program does not produce any runtime issues. Borrows from concepts beyond the curriculum.

Code compiles successfully and produces some correct results for all inputs. Program may encounter a runtime error.

Code does not compile successfully, produces multiple incorrect results, and/or suffers from multiple runtime errors.

Code Quality/Style

15%

Cleanly written and follows Google Python Style Guidelines. Nicely organized, makes good use of whitespace, and appropriately named variables, methods, and classes. Pytest 10/10 compliant (after taught).

Generally, follows Google Python Style Guidelines. Mostly well-organized, slightly over- or under- used whitespace. Not pytest 10/10 compliant (after taught).

Misses most Google Python Style Guidelines. Excessive use of whitespace. Poorly chosen names for variables, methods, and classes.

Omits Google Python Style Guidelines. Significant misuse (or omission) of whitespace or comments. Arbitrarily named variables. Code is not easy to read/follow.

Documentation

15%

All relevant code is commented in appropriate detail. Different types of comments are used appropriately. readme.txt is provided and gives a clear and concise description of the approach taken. Sphinx documentation html available and error free (after taught).

Most relevant code is commented in appropriate detail. Too many/too few comments provided. readme.txt is mostly clear and the approach taken is mostly correct. Sphinx documentation is available with minor errors (after taught).

Multiple necessary comments are missing. Comments are routinely too long/too short. readme.txt is somewhat clear or the approach taken is not correct. Minimal Sphinx documentation is available or is with major errors (after taught).

Few to no comments are provided. Comments contain little to not useful information. readme.txt is missing or the approach taken is incorrect for the problem to be solved. No sphinx documentation or non-compliable sphinx documentation (after taught).

Assignment Specifications

10%

All required files are submitted in the required format, named correctly, and program outputs are in the proper format. All Assignment instructions have been followed.

Minor errors in requirement files or files submitted in an incorrect format, named incorrectly, or small errors in the program outputs.

Major errors in required files or files submitted in an incorrect format, named incorrectly, or major errors in the program outputs.

Submission does not meet most of the submission requirements or formats. Outputs are unintelligible.

 

The Programming Assignments have been designed to help you translate what you learned in the Readings/Video lectures into using those concepts to create solutions in Python. Therefore, please do

your best not to stray too far away from the concepts and techniques taught during that Module. If you would like to try an approach that involves a skill we have not covered (list comprehension instead of a for loop to build a list, a new Python library, etc.) please consult with us through Teams or email first.

 

Assignments must be submitted to your JHU github course-connected repository for grading. We will base grading upon the submission time of final push / change to that module’s associated folder. Instructions for github, github setup, github assignment submissions will be provided in a separate github / assignment management document accessible under “Github” section on Canvas under Module 1.

 

We will post our solutions on Canvas (Module X Assignment solution will be posted under Module X) each week for you to review once everyone has submitted the assignment. The solutions are provided to help you review and resolve any portions of your solution that did not quite work, but we ask that you please do not share these solutions publicly. Similarly, we see our Assignments pop-up on Chegg, CourseHero, and other similar sites each semester. Posting an Assignment, which is the IP of JHU, publicly is a violation of course policy. A take-down notice will be issued, and incidents will be referred to the University.

Attendance (5% of Final Grade Calculations)

Lecture attendance for this virtual live class is very important, as we hope this will be an interactive course with question-and-answering as a component of learning. Therefore, we give 5% of your grade as an attendance component – please note that if you are unable to make it, you can always message us over teams for an exception and that the recorded lecture will be available should you need to refer to it at a later date.

Academic Policies

Deadlines for Adding, Dropping and Withdrawing from Courses

Students may add a course up to one week after the start of the term for that particular course. Students may drop courses according to the drop deadlines outlined in the EP academic calendar (https://ep.jhu.edu/student-services/academic-calendar/). Between the 6th week of the class and prior to the final withdrawal deadline, a student may withdraw from a course with a W on their academic record. A record of the course will remain on the academic record with a W appearing in the grade column to indicate that the student registered and withdrew from the course.

Academic Misconduct Policy

All students are required to read, know, and comply with the Johns Hopkins University Krieger School of Arts and Sciences (KSAS) / Whiting School of Engineering (WSE) Procedures for Handling Allegations of Misconduct by Full-Time and Part-Time Graduate Students.

This policy prohibits academic misconduct, including but not limited to the following: cheating or facilitating cheating; plagiarism; reuse of assignments; unauthorized collaboration; alteration of graded assignments; and unfair competition. Course materials (old assignments, texts, or examinations, etc.) should not be shared unless authorized by the course instructor. Any questions related to this policy should be directed to EP’s academic integrity officer at ep-academic-integrity@jhu.edu.

Students with Disabilities - Accommodations and Accessibility

Johns Hopkins University values diversity and inclusion. We are committed to providing welcoming, equitable, and accessible educational experiences for all students. Students with disabilities (including those with psychological conditions, medical conditions and temporary disabilities) can request accommodations for this course by providing an Accommodation Letter issued by Student Disability Services (SDS). Please request accommodations for this course as early as possible to provide time for effective communication and arrangements.

For further information or to start the process of requesting accommodations, please contact Student Disability Services at Engineering for Professionals, ep-disability-svcs@jhu.edu.

Student Conduct Code

The fundamental purpose of the JHU regulation of student conduct is to promote and to protect the health, safety, welfare, property, and rights of all members of the University community as well as to promote the orderly operation of the University and to safeguard its property and facilities. As members of the University community, students accept certain responsibilities which support the educational mission and create an environment in which all students are afforded the same opportunity to succeed academically. 

For a full description of the code please visit the following website: https://studentaffairs.jhu.edu/policies-guidelines/student-code/

Classroom Climate

JHU is committed to creating a classroom environment that values the diversity of experiences and perspectives that all students bring. Everyone has the right to be treated with dignity and respect. Fostering an inclusive climate is important. Research and experience show that students who interact with peers who are different from themselves learn new things and experience tangible educational outcomes. At no time in this learning process should someone be singled out or treated unequally on the basis of any seen or unseen part of their identity. 
 
If you have concerns in this course about harassment, discrimination, or any unequal treatment, or if you seek accommodations or resources, please reach out to the course instructor directly. Reporting will never impact your course grade. You may also share concerns with your program chair, the Assistant Dean for Diversity and Inclusion, or the Office of Institutional Equity. In handling reports, people will protect your privacy as much as possible, but faculty and staff are required to officially report information for some cases (e.g. sexual harassment).

Course Auditing

When a student enrolls in an EP course with “audit” status, the student must reach an understanding with the instructor as to what is required to earn the “audit.” If the student does not meet those expectations, the instructor must notify the EP Registration Team [EP-Registration@exchange.johnshopkins.edu] in order for the student to be retroactively dropped or withdrawn from the course (depending on when the "audit" was requested and in accordance with EP registration deadlines). All lecture content will remain accessible to auditing students, but access to all other course material is left to the discretion of the instructor.