0% found this document useful (0 votes)
6 views33 pages

Applied Programming Modules

The proposal outlines the development of a web and mobile app focused on Old Norse literature, integrating multiple public domain dictionaries and study features similar to bible study software. It specifies the use of six programming modules, each requiring 12-24 hours of work, to build upon previous learning and enhance the software's functionality. The document also details common requirements for each module, including coding standards, documentation, and the need for a public GitHub repository.

Uploaded by

soulphimic2
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views33 pages

Applied Programming Modules

The proposal outlines the development of a web and mobile app focused on Old Norse literature, integrating multiple public domain dictionaries and study features similar to bible study software. It specifies the use of six programming modules, each requiring 12-24 hours of work, to build upon previous learning and enhance the software's functionality. The document also details common requirements for each module, including coding standards, documentation, and the need for a public GitHub repository.

Uploaded by

soulphimic2
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Applied Programming Modules

I want a proposal that makes use of 6 modules to build a web and mobile app
with features for reading and studying Old Norse literature (the Eddas and
Sagas) I want to integrate the Cleasby & Vigfusson Old Norse dictionary, and
the "A Concise Dictionary of Old Icelandic" dictionary by Geir Zoëga. As well
as the "Ordbok Öfver svenska medeltids-språket", the dictionary of Medieval
Swedish by K.F Söderwall, the "Ordbog til det ældre danske Sprog", the
dictionary of Old Danish by Otto Kalkar, and the "Ordbog over det gamle norske
Sprog" dictionary by Johan Fritzner.
These public domain dictionaries are available for use like the following on
GitHub: [Link]

I want the app to have study features like those of a bible study software like
Sefaria: a Living Library of Jewish Texts Online or Logos Bible Software. For
example I want to have highlights and notes, do word studies, look at
manuscript variations, and the ability to compare translations of the Eddas and
Sagas as well as the original Old Norse and have the dictionaries implemented
well for study.

I want to choose six modules and make a plan for the software I will build that
builds upon the previous modules.
Each module will involve 12-24 hours of work.

CSE 310 | Applied Programming


Module Descriptions
Overview
In this course, you will select multiple modules to complete individually.
Available modules are listed at the bottom of this page.

Each module will require you to use your current programming knowledge to learn
new languages, tools, techniques, and libraries. During the first week of the
course, you completed a Course Plan where you selected the modules you wanted
to complete this semester. You are allowed to select different modules but you
must make sure that the module you select is something that you have not
previously learned (unless you plan to learn more advanced topics). Even though
you can only select each module once during the semester, you can build upon
software written for a previous module. For example, over three modules you
could first learn Kotlin, then create an Android app with that Kotlin code, and
then finally you can connect your Android app with a cloud database like
Firestore.
Each module will be completed in a two week Sprint. You will need to submit a
plan during the first week. The plan document describes the expectation for
time spent working on the module. By the end of the second week, you will need
to submit your final product for the module. Your module will be graded based
on your compliance to common and unique module requirements described below.

Common Requirements for all Modules


The software you write for each module has the following common requirements:

You must write software of your own creation to demonstrate your


understanding of the module. Submitting the code you wrote as part of a
published tutorial online is not sufficient.
All code must exceed 100 lines (not including setup) and must be documented
with useful comments.
The software must include a [Link] file at the top folder of the project.
The template for each [Link] file written in Markdown Language is
different for each module and is provided in the detailed table below. You
must fill out the template completely. This file will be publically viewable
in GitHub so make sure to use good spelling, good grammar, and maintain
professionalisim.
A 4-5 minute video demonstrating the execution of the software and a
walkthrough of the code must be created and uploaded publicly (or unlisted
if desired) to a site like YouTube. A link to the video must be included in
the [Link] file. The video should serve as a training video for someone
else to learn what you learned.
All the code including the [Link] file must be published in a public
GitHub repository. Each module must be in a separate GitHub repository. The
name of the repository should reflect the software you wrote (e.g.
MenuPlanner) or the technology that you used (e.g. KotlinPractice). Don't
use generic names like "Module1" or "CSE310Project2".

If you are modifying software written in a previous module to support your new
module, then you should reuse the same GitHub repository. However, the
documentation and video need to be updated to reflect the changes made to your
software by the new module. Included below is a description of each module.

Language Modules
C++
Module
The C++ language is an object-oriented language that is used for embedded and
application development. It is based on the C language. C++ requires the use of
a compiler and linker, which are operating system– and processor-specific. C++
includes the Standard Template Library (STL), which provides support for data
structures and threading.

You can read more on sites such as the following:

C++ —Wikipedia (open collaboration site)


C++ Tutorial—W3Schools (tutorial site)
C++ STL Containers—CPlusPlus (reference site)

Unique Requirements & Stretch Challenges

Write one or more programs in C++ that demonstrates some of the following:

Variables
Expressions
Conditionals
Loops
Functions
Classes
Data structure from STL (such as a vector, list, or map)

Use the C++ [Link] template.

Stretch Challenges (select one):

Modify your program to read and write to a file.


Modify your program to demonstrates inheritance with virtual functions.
Modify your program to use the new and delete operators to dynamically
create objects.

Guidance

There are multiple options for getting C++, including the following:

Install Visual Studio (Free Community Version). This is a different tool


from Visual Studio Code. Visual Studio includes C++ tools.
Install the MinGW Gnu Compiler Collection (GCC). You should make sure the
compiler and linker tools are in your path. You can either integrate the GCC
into Visual Studio Code or run the GCC tools (g++) from within the Visual
Studio Code terminal window.
Install CLion from JetBrains which will install the MinGW compiler
automatically for you.

Project Ideas

Calculator Application: Create a simple command-line calculator that


performs basic arithmetic operations. Implement error handling for invalid
inputs.
To-Do List Manager: Build a console-based to-do list application. Allow
users to add, remove, and view tasks.
Simple Text Editor: Develop a basic text editor that allows users to open,
edit, and save text files.
Basic Calculator with GUI: Build a simple graphical calculator application
using a library like Qt or SFML.
File Reader/Analyzer: Create a program that reads a text file, counts the
occurrences of each word, and displays the results.
Basic Inventory System: Design a program to manage a simple inventory system
with items, quantities, and prices.
Hangman Game: Build a command-line version of the Hangman game where players
guess a hidden word.
Simple Web Scraper: Develop a program that scrapes data from a website and
stores it in a structured format.
Chess Game: Develop a simplified version of chess where two players can make
moves and capture pieces.
Music Player: Develop a basic command-line music player that plays audio
files.

Java
Module

The Java language is an object-oriented language that is used for embedded and
application development. Java requires the use of a compiler and a Java Virtual
Machine (JVM) which can both be obtained by installing the Java Development Kit
(JDK). Compiled code (often with a .class or .jar extension) will run on any
computer that has a JVM. Java contains a substantial library which includes
many classes for data structures (Java Collection Framework), file management,
and threading. In Java, every file contains a single class. A static main
function is created in one of the classes and is used to provide a starting
point for the program.

You can read more on sites such as the following:

Java—Wikipedia (open collaboration site)


Java Tutorial—W3Schools (tutorial site)
Java Reference—Oracle (official site)
Java Collection Frameworks—BeginnersBook (tutorial site)

Unique Requirements & Stretch Challenges

Write one or more programs in Java that demonstrates some of the following:

Variables
Expressions
Conditionals
Loops
Functions
Classes
Data structure from Java Collection Framework (such as ArrayList, TreeSet,
or HashMap)

Use the Java [Link] template.

Stretch Challenges (select one):

Modify your program to read and write to a file.


Modify your program to demonstrate inheritance using
the extends and abstract keywords.
Modify your program to create an interface and then use it with
the implements keyword.

Guidance

To set up your development environment for Java, complete the following:

Install the latest version of either JDK (commercial) or OpenJDK (open


source) from Oracle. In industry, there are license considerations between
these two options. For your work in this course, either choice is
acceptable. Make sure that the Java compiler and virtual machine tools are
in your environment path.
You can either integrate Java into Visual Studio Code or run the Java tools
(javac and java) from within the Visual Studio Code terminal window. As
another option, you can use a tool like IntelliJ (free community version) to
develop and run Java code.

Project Ideas

Expense Tracker: Create a program that helps users track their daily
expenses and provides insights into spending habits.
Text-based RPG Game: Design a text-based role-playing game with character
creation, battles, and a storyline.
Weather Forecast App: Create an application that retrieves weather data from
an online API and displays current weather conditions and forecasts.
Basic Social Media Platform: Develop a simplified social media platform
where users can create profiles, post updates, and follow other users.
Stock Portfolio Tracker: Build an application that tracks stock prices and
allows users to manage their stock portfolios.
Task Scheduler with Calendar: Create a task scheduler with an integrated
calendar that allows users to manage events and tasks.
Movie Recommendation System: Create a movie recommendation system that
suggests movies to users based on their preferences and viewing history.
Guess the Number Game: Develop a number guessing game where the computer
generates a random number, and the player has to guess it within a limited
number of attempts.
Student Gradebook: Create a program to maintain a student gradebook,
including adding, updating, and calculating grades.
Basic Paint Program: Create a simple paint program with drawing tools like
brushes, shapes, and colors.

Kotlin
Module

The Kotlin language is an object-oriented language that is used for general


application development including Android mobile app development. It is based
on the Java language. Kotlin was designed to provide improvements to the Java
language while still supporting the Java libraries. Library support includes
data structures, file operations, and networking.

You can read more on sites such as the following:

Kotlin—Wikipedia (open collaboration site)


Kotlin Tutorial—Programiz (tutorial site)
Kotlin (official site)
Comparison to Java (official site)

Unique Requirements & Stretch Challenges

Write one or more programs in Kotlin that demonstrates some of the following:

Variables (mutable and immutable)


Expressions
Conditionals
Loops
Functions
Classes

Use the Kotlin [Link] template.

Stretch Challenges (select one):

Modify your program to demonstrate the creation and modification


of collections.
Modify your program to demonstrate data classes.
Modify your program to demonstrate the varied uses of the when keyword.

You may use this module also to learn Swift or Dart. You may need to modify
some of the requirements if you learn Swift or Dart instead.

Guidance
To set up your development environment for Kotlin, complete the following:

The Java Development Kit (JDK) is needed since Kotlin is built on top of it.
Install the latest version of either JDK (commercial) or OpenJDK (open
source) from Oracle. In industry, there are license considerations between
these two options. For your work in this course, either choice is
acceptable.
Install IntelliJ Idea (Free Community Version). This is an IDE like Visual
Studio Code. Kotlin support will be installed automically. When you create a
project in IntelliJ, select "Kotlin" and "JVM | IDEA". When you create
files, select "Kotlin File/Class" to create .kt files.

Project Ideas

Task Manager: Create a console-based task manager application that allows


users to add, remove, and list tasks.
Basic Calculator: Create a basic calculator application with support for
arithmetic operations and user-friendly input handling.
Simple Note-taking App: Design a note-taking app that lets users create,
edit, and organize notes.
Password Manager: Build a secure password manager that stores and retrieves
user passwords.
Blogging Platform: Design a blogging platform where users can create and
publish blog posts.
Contact Manager: Develop a contact manager application that allows users to
add, edit, and search for contacts.
Basic Drawing App: Create a simple drawing application that allows users to
draw shapes and lines.
Recipe Organizer: Create an app for managing recipes, allowing users to add,
search, and organize recipes by categories.
Basic Chess Game: Develop a simplified version of chess where two players
can make moves and capture pieces.
Hangman Game: Build a command-line version of the Hangman game where players
guess a hidden word.

R
Module

R is a language and environment for statistical computing and graphics. It is a


GNU project which is similar to the S language and environment which was
developed at Bell Laboratories (formerly AT&T, now Lucent Technologies) by John
Chambers and colleagues. R can be considered as a different implementation of
S. There are some important differences, but much code written for S runs
unaltered under R.
R provides a wide variety of statistical (linear and nonlinear modelling,
classical statistical tests, time-series analysis, classification, clustering,
…) and graphical techniques, and is highly extensible. The S language is often
the vehicle of choice for research in statistical methodology, and R provides
an Open Source route to participation in that activity.

One of R’s strengths is the ease with which well-designed publication-quality


plots can be produced, including mathematical symbols and formulae where
needed. Great care has been taken over the defaults for the minor design
choices in graphics, but the user retains full control.

R is available as Free Software under the terms of the Free Software


Foundation’s GNU General Public License in source code form. It compiles and
runs on a wide variety of UNIX platforms and similar systems (including FreeBSD
and Linux), Windows and MacOS.

You can read more on sites such as the following:

R Documentation
What is R

Unique Requirements & Stretch Challenges

Write multiple functions (not necessarily part of a single piece of software)


in R that demonstrates some of the following:

Display output to the screen.


Use at least 5 different R datatypes in your program
Incorporate at least one loop that works with lists or arrays
Use Dataframes

Use the R [Link] template.

Stretch Challenges (select one):

Incorporate CSV file


Create process and send messages to the process
Use the case of coding block

Guidance

To setup your development environment complete the following:

Visual Studio Code has support for R. Please review this document.

Project Ideas

Statistical Hypothesis Tester: Develop a program that allows users to


perform statistical hypothesis tests (e.g., t-tests, chi-square tests) on
data.
Linear Regression Model: Create a script that fits a simple linear
regression model to a dataset and displays the regression equation and
visualizations.
Data Cleaning/Preprocessor: Develop a script that cleans and preprocesses
messy data, handles missing values, and prepares it for analysis.
Cluster Analysis Tool: Build a program that performs cluster analysis on
data and visualizes the results using techniques like k-means clustering.
Time Series Forecasting: Create a script that fits a time series forecasting
model (e.g., ARIMA) to historical data and generates future predictions.
Data Mining: Write a data mining script that discovers patterns and
associations in large datasets using techniques like association rule
mining.
Natural Language Processor: Create an NLP tool using R that performs tasks
like text classification, sentiment analysis, and word cloud generation.
Web Scraping with Rvest: Develop a web scraping script using the rvest
package to extract data from websites and store it in a dataframe.
Recommendation System: Build a recommendation system that provides
personalized recommendations for users based on their preferences and
behavior.
Basic Simulation Model: Write a simulation model in R to model a real-world
process or scenario and analyze its behavior.

Erlang
Module

The Erlang language is an example of functional languages like Haskell, F#, and
Clojure. Functional languages (unlike the imperative languages you have learned
previously) have the following characterstics:

Functions are designed to produce an output from the inputs.


Variables are immutable since functions are only tasked with producing a
result. When dealing with data structures, this means that when we add or
remove something we will either reuse parts of the previous structure or we
will need to recreate parts of the structure.
Since functions are only concerned with the current task and also since
variables are immutable, there are no side effects from our code. A side
effect occurs when running a funciton or changing a variable affects other
variables and functions. Side effects are common in object oriented
programming (member functions affect member data).

The goal with functional programming is to write code with higher quality due
to the strictness of the language. Like Python, the Erlang language determines
variable types automatically. Other languages like Haskell are strictly typed.

You can read more on sites such as the following:


Erlang—Wikipedia (open collaboration site)
Programming Erlang (E-Book via BYU-Idaho - Start with Part 2)
Erlang Standard Library Reference Manual (official site)
Erlang by Example (tutorial site)

Unique Requirements & Stretch Challenges

Write multiple functions (not necessarily part of a single piece of software)


in Erlang that demonstrates some of the following:

Display output to the screen using format .


Pattern Matching in function parameters
Recursion
Guards
Lists
Using lambda functions with lists:map , lists:filter , or lists:foldl

You can use this module to learn any Functional Programming language. If you
pick a different language, you may need to modify the requirements.

Use the Erlang [Link] template.

Stretch Challenges (select one):

Demonstrate throwing and handling exceptions


Create process and send messages to the process
Use the case of coding block

Guidance

To setup your development environment complete the following:

Install Erlang You want to make sure that erl shell program is in the path.
Visual Studio Code has support for Erlang. The Erlang extension can be
installed in Visual Studio Code. The erl shell can be executed from the
terminal.

Project Ideas

List Manipulation: Write functions to manipulate lists, such as reversing a


list, finding the length, or checking if a list is a palindrome.
Factorial Calculator: Write functions to calculate the factorial of a number
using recursion.
Fibonacci Sequence Generator: Create functions that generate the Fibonacci
sequence up to a given number using recursion.
Pattern Matching Game: Create a simple pattern matching game where the
player has to guess the correct pattern.
Recursive File Search: Build a program that recursively searches for files
with a specific extension in a directory tree.
Functional Tic-Tac-Toe: Build a console-based Tic-Tac-Toe game using
functional programming principles.
Sudoku Solver: Write a Sudoku solver using functional programming
techniques.
Natural Language Processor: Develop a program that performs basic natural
language processing tasks, such as text tokenization and sentiment analysis.
Basic Calculator: Create a functional calculator application that performs
basic arithmetic operations and displays the results.
Image Processor: Implement a simple image processing tool using functional
programming to apply filters and transformations to images.

JavaScript
Module

JavaScript is a scripting or programming language that allows you to implement


complex features on web pages — every time a web page does more than just sit
there and display static information for you to look at — displaying timely
content updates, interactive maps, animated 2D/3D graphics, scrolling video
jukeboxes, etc. — you can bet that JavaScript is probably involved. It is the
third layer of the layer cake of standard web technologies, two of which (HTML
and CSS) we have covered in much more detail in other parts of the Learning
Area.

The core client-side JavaScript language consists of some common programming


features that allow you to do things like:

Store useful values inside variables. In the above example for instance, we
ask for a new name to be entered then store that name in a variable called
name.
Operations on pieces of text (known as "strings" in programming). In the
above example we take the string "Player 1: " and join it to the name
variable to create the complete text label, e.g. "Player 1: Chris".
Running code in response to certain events occurring on a web page. We used
a click event in our example above to detect when the label is clicked and
then run the code that updates the text label.
And much more!

What is even more exciting however is the functionality built on top of the
client-side JavaScript language. So-called Application Programming Interfaces
(APIs) provide you with extra superpowers to use in your JavaScript code.

APIs are ready-made sets of code building blocks that allow a developer to
implement programs that would otherwise be hard or impossible to implement.
They do the same thing for programming that ready-made furniture kits do for
home building — it is much easier to take ready-cut panels and screw them
together to make a bookshelf than it is to work out the design yourself, go and
find the correct wood, cut all the panels to the right size and shape, find the
correct-sized screws, and then put them together to make a bookshelf.

You can read more on sites such as the following:

JavaScript Documentation (Everything above came from this site)


What is JavaScript Used For?

Unique Requirements & Stretch Challenges

Write multiple functions (not necessarily part of a single piece of software)


in JavaScript that demonstrates some of the following:

Display output to the screen. This can be done with [Link] writing to
the terminal, or in a browser using html.
Native Array ES6 functions
Recursion
Use a JavaScript library written by someone else in your code (could be an
npm package if using Node, or a cdn link for any JS library)

You can use this module to learn any Functional Programming language. If you
pick a different language, you may need to modify the requirements.

Use the JavaScript [Link] template.

Stretch Challenges (select one):

Demonstrate throwing and handling exceptions


Create DOM structures with CSS (if using browser), or use 2 more npm
packages if using [Link].

Guidance

To setup your development environment complete the following:

Client-side JavaScript code runs in the browser


If you want to use JavaScript as a backend language (similar to Python), you
can install the [Link] runtime environment on your computer.

Project Ideas

To-Do List: Create a web-based to-do list application that allows users to
add, remove, and mark tasks as completed.
Weather Forecast: Create a web app that fetches and displays weather
forecasts based on user-entered locations.
Recipe Finder: Create a recipe finder application that allows users to
search for recipes based on ingredients they have.
Interactive Storyteller: Build an interactive storytelling app where users
can choose their own adventure by making choices in the story.
Currency Converter: Develop a currency converter application that converts
between different currencies based on exchange rates.
Memory Game: Build a memory game where players need to match pairs of cards
with JavaScript animations and effects.
Polling App: Create a real-time polling application where users can create
and participate in polls.
URL Shortener: Build a URL shortener service that shortens long URLs and
provides statistics on link usage.
Interactive Art Gallery: Design an interactive art gallery that allows users
to explore and interact with artwork online.
Social Media Dashboard: Develop a dashboard that aggregates social media
feeds and displays updates in real-time.

C#
Module

C# is a modern, object-oriented programming language within the .NET framework,


catering to secure and robust application development. Rooted in the C family,
C# is familiar to developers acquainted with C, C++, Java, and JavaScript. It
encompasses major language components and offers interactive tutorials for
beginners to explore its capabilities.

It's fundamentally object-oriented and component-focused, supporting the


creation and utilization of software components seamlessly. Offering features
like garbage collection, nullable types, robust exception handling, lambda
expressions, LINQ, asynchronous operations, a unified type system, and both
reference and value types, C# promotes consistent operations across types.
Moreover, it supports generic methods, iterators, and emphasizes versioning for
evolution while ensuring compatibility, seen in aspects like separate virtual
and override modifiers, method overload resolution rules, and explicit
interface member declarations.

You can read more on sites such as the following:

C# Documentation (Everything above came from this site)


What is C# Used For?

Unique Requirements & Stretch Challenges

Write one or more programs in C# that demonstrates some of the following:

Variables
Expressions
Conditionals
Loops
Functions
Classes
Structures and Unions

Use the C# [Link] template.

Stretch Challenges (select one):

Modify your program to read and write to a file.


Modify your program to demonstrate inheritance using
the extends and abstract keywords.

Guidance

To setup your development environment complete the following:

Setting up the environment in C#

Project Ideas

Text Adventure Game: Develop a text-based adventure game where players make
choices to progress through the story.
Employee Management System: Build a console-based employee management system
with features like adding, editing, and displaying employee details.
Library Catalog System: Design a library catalog system that allows users to
search for books, check availability, and borrow or return books.
Basic Paint Program: Create a simple paint application that allows users to
draw and manipulate shapes on a canvas.
Inventory Management System: Create a program that simulates an inventory
management system for tracking products and quantities.
Stock Portfolio Tracker: Create a program for tracking stock portfolios,
displaying real-time stock prices, and calculating portfolio value.
Recipe Management System: Design a recipe management system where users can
add, search, and organize recipes.
File Encryption and Decryption Tool: Create a program for encrypting and
decrypting files using cryptographic algorithms.
Tic-Tac-Toe Game: Build a UI where two players can add Xs or Os to the
board.
Task Scheduler and Reminder: Build a task scheduler with reminders and
notifications for important events and deadlines.

TypeScript
Module

TypeScript is a strongly typed programming language that builds on JavaScript,


giving you better tooling at any scale.
TypeScript adds additional syntax to JavaScript to support a tighter
integration with your editor. Catch errors early in your editor.

TypeScript code converts to JavaScript, which runs anywhere JavaScript runs: In


a browser, on [Link] or Deno and in your apps.

TypeScript understands JavaScript and uses type inference to give you great
tooling without additional code.

You can read more on sites such as the following:

TypeScript Documentation (Everything above came from this site)


What is TypeScript and why should you use it?

Unique Requirements & Stretch Challenges

Write multiple functions (not necessarily part of a single piece of software)


in TypeScript that demonstrates some of the following:

Display output to the terminal.


Recursion
Classes
Lists
Asynchronous functions

Use the TypeScript [Link] template.

Stretch Challenges (select one):

Demonstrate throwing and handling exceptions


Use TS Lint
Incorporate Jest in your project

Guidance

To setup your developmenthenvironment complete the following:

How to set up a new typescript project

Project Ideas

File Uploader and Downloader: Write a program that allows users to upload
and download files from a server.
Basic Drawing App: Create a simple drawing application in the browser using
TypeScript and HTML5 Canvas.
Authentication System: Build a user authentication system, including
registration, login, and user profile management.
CRUD API: Create a simple CRUD (Create, Read, Update, Delete) API using
TypeScript and [Link].
Recursive Directory Scanner: Write a TypeScript script that recursively
scans a directory, lists its contents, and displays the file structure.
List Sorting Algorithms: Implement sorting algorithms (e.g., bubble sort,
quicksort) and compare their performance on large datasets.
Async/Await Example: Write asynchronous functions that fetch data from an
API and display the results in the terminal.
Recursive Fibonacci: Write a program to calculate and display Fibonacci
numbers using recursion.
Basic Note-taking App: Build a note-taking application that allows users to
create, edit, and organize notes.
Basic Quiz or Survey Generator: Create a tool for designing and taking
quizzes and surveys with customizable questions and options.

Rust
Module

The Rust language is used for embedded and application development. While
similair to C or C++, it has improvements including memory management and
variable ownership. Support is provided for object-oriented methodologies as
well as data structures and threading. Rust comes with a build environment
called Cargo which is used both for library management and building.

You can read more on sites such as the following:

Rust—Wikipedia (open collaboration site)


Rust Tutorial—TutorialsPoint (tutorial site)
Rust (official site)

Unique Requirements & Stretch Challenges

Write one or more programs in Rust that demonstrates some of the following:

Variables (mutable and unumutable)


Expressions
Conditionals
Loops
Functions (ownership or reference)

Use the Rust [Link] template.

Stretch Challenges (select one):

Modify your program to use a data structure (e.g. Vec, LinkedList, Hashmap).
Modify your program to use slicing.
Modify your program to demonstrate object oriented techniques using
both struct and impl .
Guidance

To setup your developmenthenvironment complete the following:

Install Rust.
Visual Studio Code has support for Rust. The Rust extension can be installed
in Visual Studio Code. The cargo build tool can be run from the terminal.
Follow chapter 1 of the Rust Programming Language Book for step by step
instructions for building a Hello World application using the cargo tool.

Project Ideas

Basic File I/O: Write a program that reads from and writes to text files,
demonstrating file input/output operations.
Factorial Calculator: Write a program to calculate the factorial of a number
using recursion.
Basic Web Scraper: Build a program that scrapes data from a website and
displays specific information.
File Encryption and Decryption: Create a program for encrypting and
decrypting files using cryptographic algorithms.
Password Manager: Build a secure password manager that allows users to store
and retrieve passwords.
Basic API Client: Write a program that consumes data from a public API and
presents it to the user.
Markdown to HTML Converter: Create a program that converts Markdown files to
HTML, showcasing text processing.
Basic API Server: Develop a simple RESTful API server to handle CRUD
operations.
Fibonacci Sequence Generator: Develop a program to generate and display
Fibonacci numbers up to a specified limit.
Hangman Game: Build a command-line version of the Hangman game where players
guess a hidden word.

Other Modules
Cloud Databases
Module

Cloud data storage is a convenient solution which removes the requirement for
an individual or company to maintain their own database server. Tools
like Google Firebase, Amazon DynamoDB, and MongoDB will provide you a database
which you can access using an API (function calls from a library). The use of
these cloud databases is frequently free for simple projects, but will cost
when scaled up. Cloud databases provide a mix of various types of databases,
including relational and key/value. A key/value database (which is recommended
in the instructions) will store data into maps that can be queried either in
whole, in parts, or in filtered parts. A key/value database is also commonly
called a NoSQL database. The APIs for each database will vary and provide these
capabilities.

You can read more on sites like the following:

Overview of Cloud Databases - MongoDB (company-sponsored site)


An Introduction to Cloud Databases: Chapter 1 (electronic book)
NoSQL Tutorial - Guru99 (tutorial site)

Unique Requirements & Stretch Challenges

Develop software that interacts with a cloud database. The software must have
the following characteristics:

You must create a database using a cloud service for your program to use
including at least one table to store data into.
Your software must demonstrate the ability to insert, modify, delete, and
retrieve (or query) data.

Use the Cloud Databases [Link] template.

Stretch Challenges (select one):

Receive notifications in your software when data in the cloud changes.


Create two or more tables that are related to each other.
Implement user authentication.

Guidance

You should consider using Python and Firestore (part of Google Firebase) for
this module. Here are some useful notes when using this suggested environment:

Use firebase-admin to access a Firestore database from Python. You can use
pip to install: pip install firebase-admin
You will need to create a free Firebase account, create a Firebase project,
and create a Firestore database in the project.
During the process of getting your account and database set up, you will
need to download a Service Account File, which is a JSON file. This file
along with the project name will be needed when you initialize your
connection to the Firestore database within your code. The Service Account
File is secret and should not be shared in the GitHub repository.

Here is a list of websites that you might find useful when working in the
suggested environment:

Firestore Tutorial (official site)


Firebase Console (official site)
Google Authentication—Creating a Service Account (official site)

Project Ideas

Customer Relationship Management: Build a CRM system for managing customer


interactions and sales data stored in the cloud.
Health and Fitness Tracker: Develop a health and fitness tracking app that
stores user activity and health data in the cloud.
Music Playlist Manager: Create a music playlist manager that allows users to
create and share playlists, with song information stored in the cloud.
Language Learning App: Develop a language learning app that stores user
progress and achievements in the cloud.
Weather Dashboard: Build a weather dashboard that fetches weather data from
an API and stores user preferences in the cloud.
Personal Finance Manager: Develop a personal finance manager that connects
to a cloud database to track income, expenses, and budgets.
Notes and Documents Organizer: Create a cloud-based notes and documents
organizer that lets users store and manage their files securely.
To-Do List: Create a to-do list application that stores tasks in a cloud
database. Users can add, edit, and delete tasks.
Event Planner: Build an event planning application that stores event
details, guest lists, and RSVPs in the cloud.
E-Commerce Platform: Create a small-scale e-commerce platform with product
listings and user accounts, all managed in the cloud.

Data Analysis
Module

As the processing power of computers has increased, the world has become able
to capture the large amounts of data that it produces. Surveys, transactions,
and observations are captured every hour of every day. A data scientist has the
skills to capture, organize, and analyze large amounts of data and look for
patterns, trends, and statistical relevance between datasets. Since the
possibilities of data analysis are endless, programming languages are used to
write customized software to analyze data. Some languages, like R, were
designed specifically for data analysis. Libraries
like Pandas, NumPy, Matplotlib, Scrapy, BeautifulSoup, and TensorFlow provide
the capabilities to do the analysis with the familar Python programming
language.

You can read more from sites such as the following:

Data Science—Wikipedia (open collaboration site)


Overview of Pandas (official site)
R Programming Language (official site)
Unique Requirements & Stretch Challenges

Write software to analyze a set of data to answer two questions about that data
as detailed below:

Find a free dataset that interests you.


Identify the two questions about the dataset on your own. You might change
your questions after you explore the data further.
Write a program in any programming language using a statistics library (e.g.
R or Python Pandas) to analyze the dataset and provide an answer to your
questions.
You must demonstrate the ability to do one or more of the following to
achieve each answer: filter, sort, aggregate (sum, average, count), or data
conversion.
While there is no right or wrong answer, your answer should be justified by
your analysis.

You can also use this module to explore Machine Learning. You will need to
propose a project different requirements in your project plan.

Use the Data Analysis [Link] template.

Stretch Challenges (select one):

Update your software so it draws a graph showing some of the results.


Identify a third question from your dataset and write code to answer it.

Guidance

You should consider using Python and Pandas for this module. You should also
consider using Kaggle to obtain a free dataset. Here are some useful notes when
using this suggested environment:

You need to install Pandas on your computer. You can use pip to install: pip
install pandas .
You can download a dataset from [Link]. You should look for a dataset
that has good documentation, which will help you understand the data.

Here is a list of websites that you might find useful when working in the
suggested environment:

Pandas 10 Minute Tutorial (official site)


Pandas Getting Started Tutorials (official site)
Pandas Example with Titanic Data (tutorial site)
Exploratory Data Analysis with Pandas (tutorial site)

Project Ideas
Stock Market Analysis: Analyze historical stock price data to identify
trends, calculate returns, and visualize stock performance.
E-Commerce Sales Analysis: Analyze sales data from an online store to
identify top-selling products, customer behavior, and seasonal trends.
Weather Data Analysis: Analyze historical weather data to identify climate
trends, temperature variations, and extreme weather events.
Healthcare Data Analysis: Analyze healthcare data to identify patient
demographics, disease patterns, and healthcare resource utilization.
Housing Market Analysis: Analyze housing market data to identify price
trends, housing demand, and regional variations.
Sports Data Analysis: Analyze sports statistics to evaluate player
performance, team rankings, and historical trends.
Restaurant Reviews Analysis: Analyze restaurant reviews to identify popular
cuisines, customer preferences, and review sentiment.
Education Data Analysis: Analyze educational data to assess student
performance, graduation rates, and educational disparities.
Job Market Analysis: Analyze job market data to identify in-demand skills,
salary trends, and job openings.
Environmental Data Analysis: Analyze environmental data (e.g., air quality,
pollution) to identify environmental trends and potential health impacts.

Game Framework
Module

Games bring entertainment and education to many people using their computers
and devices. However, we frequently don't realize the software code that is
running behind those games. Games have several components to them, including
the following:

User Interface including Graphics and Sound


Event Processing (Keyboard, Mouse)
Game Logic and Story
Network, Database and Notifications

With so many moving components in a game, it is useful to use a game platform


for development. There are several inluding Unity, Lumberyard, Unreal
Engine, Cryengine, and Urho3D. Many of these platforms contain professional
tools for graphics and animation. There are also several tools using Python
including Arcade, PyGame, Kivy and Panda3D.

You can read more from sites such as the following:

Game Engines—Wikipedia (open collaboration site)


List of Game Engines—Wikipedia (open collaboration site)

Unique Requirements & Stretch Challenges


Write a simple game using a Python game framework (e.g. PyGame or Arcade) or a
more complex platform such as Unity or Unreal. Note that if you use Unity or
Unreal, you may need to plan your time more carefully.

The game must have the following characteristics:

The game should display graphics


The game should take user input from the keyboard or mouse
The game should have moveable objects

Use the Game Framework [Link] template.

Stretch Challenges (select one):

Allow the user to save and load the game.


Add music or sound effects to the game.
Provide levels in your game that change the difficulty of the game.

Guidance

You should consider using Python and Arcade for this module. Here are some
useful notes when using this suggested environment:

You need to install Arcade on your computer. You can use pip to install: pip
install arcade .
You should consider using Sprite classes in Arcade for any moving objects in
the game.
If you have any picture or sound files you want to include with your game,
make sure they are in the same folder as your Python code.

Here is a list of websites that you might find useful when working in the
suggested environment:

Arcade Examples (official site)


Arcade Tutorial—RealPython (tutorial site)

Project Ideas

Classic Pong Game: Create a simple Pong game, where two players can control
paddles to bounce a ball back and forth.
Space Invaders Copy: Build a Space Invaders-style game, featuring alien
enemies and a player-controlled spaceship.
Flappy Bird: Create a Flappy Bird-inspired game, where players navigate a
bird through obstacles.
Memory Matching Game: Develop a memory matching game, featuring a grid of
cards that players flip to find matching pairs.
Tic-Tac-Toe: Implement a classic Tic-Tac-Toe game, allowing two players to
take turns.
Snake Game: Develop a Snake game, where players control a growing snake to
eat food and avoid collisions.
Chess Game: Design a two-player Chess game, featuring standard chess rules
and gameplay.
Asteroids Clone: Build an Asteroids-inspired game, where players pilot a
spaceship to destroy asteroids.
Card Game: Create a card battle game, featuring collectible cards and
strategic gameplay.
Sudoku: Develop a Sudoku puzzle solver game, allowing players to input and
solve Sudoku puzzles.

GIS Mapping
Module

Geographic Information Systems (GIS) involves the organization of information


on a map. The information can be physical (cities, landmarks, mountains,
trails), economic (median incomes, tax rates, employment), social (gender,
ethnicity, family, religion), or event driven (earthquake, lightning, crime,
activity). Using maps, decisions can be made, trends can be found, and
information can be obtained. The components in GIS include user interfaces,
data storage, and analysis.

You can read more from sites such as the following:

Geographic Information System—National Geographic (encyclopedia)


Careers in GIS—Esri (company sponsored site)

Unique Requirements & Stretch Challenges

Create a website or mobile app that generates a map using a mapping library
like ArcGIS or Google Maps. The map should include markers showing useful
information. The map must have the following characeterstics:

You must have at least 20 markers on the map


When the user clicks on a marker, a popup should be displayed showing
information about the marker. If you are using a mobile app, you can display
the information in something native to the platform (e.g. Android Toast).

Use the GIS Mapping [Link] template.

Stretch Challenges (select one):

Obtain data automatically from a server publically available on the internet


so that your map is always up to date.
Provide a filter in the map to allow the user to display only some of the
markers.
Include more than one type of data on your map (with different marker
graphics).

Guidance

You are required to use ArcGIS. You should consider using Javascript and HTML
to create your map. ArcGIS offers many detailed tutorials for different
programming languages. Here is a list of websites that you might find useful:

ArGIS JavaScript Tutorial—ArcGIS (official site)


JavaScript—W3Schools (tutorial site)

Project Ideas

Local Landmarks Map: Create a map that displays notable landmarks in your
local area, such as parks, museums, and historical sites.
City Event Map: Develop an app that displays upcoming events in your city on
an interactive map, allowing users to click on markers for event details.
Public Transportation Tracker: Build a real-time public transportation
tracker that shows the locations of buses, trams, or subways on a map.
Weather Radar Map: Develop a weather app that displays live weather radar
data on an interactive map, allowing users to track storms and
precipitation.
Hiking Trail Finder: Create an app that helps users discover nearby hiking
trails, complete with trail information and difficulty levels.
Environmental Pollution Map: Create a map that visualizes environmental
pollution data, such as air quality and water contamination, for a specific
region.
Restaurant Locater: Build an app that uses GIS to help users find nearby
restaurants, displaying their locations and user reviews on a map.
Property Prices Heatmap: Build a real estate app that displays property
prices as a heatmap, helping users identify areas with affordable housing.
National Park Guide: Build an app that serves as a guide to national parks,
providing maps, trail information, and visitor centers.
Air Quality Index Map: Create a real-time air quality map that displays air
quality index values for different locations in your city.

Mobile App
Module

Mobile is everywhere, and the ability to make mobile applications has never
been more sought after or desirable than it is now. Android applications are
typically written in Java or Kotlin using Android Studio. iOS applications are
written in Swift using XCode (using a Mac).
Other platforms have been created to make it easier to port to multiple
platforms. React Native uses JavaScript to create apps that will run on both
platforms. Flutter uses the Dart language to achieve the same result.

You can read more from sites such as the following:

Android Apps - Wikipedia (reference site)


Android Studio (official site)
Develop Apps for iOS (official site)
React Native (official site)
Flutter (official site)

Unique Requirements & Stretch Challenges

Create a Mobile App using one of the following platforms:

Android - Java or Kotlin


iOS - Swift - Note that you need a Mac using XCode for this option
React Native - Javascript - Creates Android/iOS compatible apps
Flutter/Dart - Creates Web/Android/iOS compatible apps

The app should have the following characteristics:

Have at least one screen


Be interactive with the user (e.g. responds to inputs by displaying
appropriate outputs)

Use the Mobile App [Link] template.

Stretch Challenges (select one):

Integrate with a component on the phone such as the camera, microphone,


sensor, or location services.
Incorporate two or more screens
Store data either in local storage so is persists even if the app closes or
if the phone is turned off

Guidance

You should consider using Android Studio and either Java or Kotlin (depending
on which language you know best). The app should run on an Android phone. If
you don't have an Android phone, you can use the emulator provided within
Android Studio. Here is a list of websites that you might find useful when
creating an Android app:

Build Your First App


Android Basics in Kotlin

The following links may be useful for some of the stretch challenges:
Permissions Overview
How to Enable Location Access in Android
Starting Activities with an Intent
Saving data in Shared Preferences

Project Ideas

Flashcard App: Develop a flashcard app for studying various subjects with
user-generated flashcard sets.
Language Learning App: Develop an app for learning new languages, including
vocabulary quizzes and pronunciation guides.
News Aggregator: Create an app that aggregates news articles from different
sources and displays them to users.
Travel Journal: Build a travel journal app that lets users record their
travel experiences with photos and notes.
Drawing and Painting App: Build an app that allows users to draw, paint, and
save their artwork.
Online Marketplace: Create a platform for buying and selling items, similar
to a classified ads website.
Language Translator: Develop an app that translates text or speech from one
language to another.
Event Booking App: Develop an app for booking tickets to concerts, movies,
or sporting events.
Health and Fitness App: Create a health and fitness app that offers workout
routines, diet tracking, and health statistics.
Travel Planner: Build a travel planning app that helps users organize their
trips, including itinerary creation and travel tips.

Networking
Module

Communication between two computers (or even two pieces of software on the same
computer) can be done using the networking stack. A network is more than just
physical wire (or wireless) that connects a computer to a network; it also
includes the data that is transmitted through that connection. The data is
organized into layers according to the Open Systems Interconnection (OSI)
model. These layers include the physical, datalink, network, and transport
layers. These layers are used to package, route, and transmit data between
computers. Common transport layers include TCP (Transmission Control Protocol)
and UDP (User Datagram Protocol). On top of all of these layers is the data
that we actually want to communicate to another computer. This data is
frequently organized by a message structure that both the sending computer and
receiving computer understand. Defined formats like JSON, HTML, or XML are all
commonly used.
Any information can be sent on a network connection. The software could be
collaborative (e.g. chat), problem-solving (e.g. provide answer to question),
content based (e.g. file or web server), or embedded (e.g. request data from a
sensor or turn on a light).

When developing networking software, there are two types of models we can look
at:

Client-Server: The server receives requests from many clients, processes


each one, and sends the responses back to the client.
Peer-to-Peer: A computer (peer) communicates directly to another commputer
without going through a server. In this model, there may be a server that is
used by a computer to get address information for the other computer.

You can read more on sites such as the following:

OSI Model—Wikipedia (open collaboration site)


Client-Server model—Wikipedia (open collaboration site)
Peer-to-Peer Computing—TutorialsPoint (tutorial site)
What's the Difference Between TCP and UDP?—How-To Geek (tutorial site)

Unique Requirements & Stretch Challenges

Write a program that allows one computer to communicate with another computer
using either of the following:

Client-Server Model—You will need to write one program for the client and
one program for the server.
Peer-to-Peer Model—You will need to write one program for the peer to both
send and receive.

The software should have the following characteristics:

The client or peer should send a request to the server or another peer. A
response should be sent back and used (e.g. displayed)
You can use either TCP or UDP.

Use the Networking [Link] template.

Stretch Challenges (select one):

Provide support for at least three different kinds of requests that the
server or the peer can respond to.
Provide a graphical user interface (GUI) for your program instead of the
command line.
Modify the server or the peer to obtain information from a local file or
database in response to a request from the client or another peer.

Guidance
You should consider using Python and standard networking libraries for this
module. Here are some useful notes when using this suggested environment:

Python already has libraries to read and write from TCP and UDP sockets and
servers. See the links below for information and examples.
You will need to run two programs at the same time to test your software. It
may be easier to run these programs on separate computers that have
different IP addresses. If you don't have this option, you might consider
installing a virtual machine running Linux, or configuring your software to
send and receive on different ports.

Here is a list of websites that you might find useful when working in the
suggested environment:

Python Server Libraries (official site)


Python Socket Libraries (official site)

Project Ideas

Simple Chat Application: Create a basic chat application where clients can
connect to a server, send messages, and receive responses.
File Transfer Server: Develop a server that allows clients to upload and
download files securely over the network.
Remote Control Application: Build a remote control app that enables clients
to control a server's desktop or perform actions remotely.
Quiz Game Server: Build a server for hosting a multiplayer quiz game where
clients can connect and compete.
Weather Information Server: Create a server that provides real-time weather
information to clients based on their location.
File Sharing (Peer-to-Peer): Develop a peer-to-peer file-sharing application
where users can share files directly with each other.
Peer Discovery Service: Create a service that helps peers discover and
connect with each other on a local network.
Local Network Game: Build a multiplayer game that runs on a local network,
allowing peers to join and play together.
Secure Peer Communication: Create a secure peer-to-peer communication
platform with end-to-end encryption.
Peer-to-Peer Video Streaming: Develop a peer-to-peer video streaming
application for sharing video content directly between users.

SQL Relational Databases


Module

Data can be stored in many different formats. An efficient method for storing
information is in a database. One common type of database is a relational
database, which organizes the data into tables and relates them together using
keys. Libraries have been written to make it easy for the programmer to read
and write to and from these databases. Most relational databases support
Structured Query Language, or SQL. SQL is a language that allows the programmer
to easily interact with the database. Examples of relational databases include
the following: Oracle, MySQL, Microsoft SQL Server, PostgreSQL, SQLite, and IBM
DB2.

You can read more about relational databases and SQL at sites including the
following:

Relational Databases - Wikipedia (open collaboration site)


Relational Databases - Oracle (company sponsored site)
SQL - W3Schools (tutorial site)

Unique Requirements & Stretch Challenges

Write a program that intereacts with a relational database using SQL. The
software must have the following characteristics:

You must create a database for your program to use including at least one
table to store data into.
Your software must demonstrate the ability to insert, modify, delete, and
retrieve (or query) data.
This module requires more than just creating the database and determining
SQL commands. You must write software that builds the SQL commands, submits
them, receives the results from the database, and uses the results in some
way.

Use the SQL Relational Database [Link] template.

Stretch Challenges (select one):

Add additional tables to your database and perform a join in your software
between two of the tables.
Use at least two of the aggregate functions to summarize numerical data in
your database.
Demonstrate the use of a column containing a date or time along with a query
that demonstrates filtering within a date or time range.

Guidance

You should consider using Python and ulLite for this module. SQLite is already
support in Python by importing the sqlite3 library.

Here is a list of websites that you might find useful when working in the
suggested environment:

SQLite Tutorial (tutorial site)


Python sqlite3 (official site)
TutorialsPoint: SQLite - Python (tutorial site)

Project Ideas

Student Records: Develop a program to manage student records, including


adding new students, updating grades, and generating reports.
Employee Directory: Build an employee directory application that stores
employee information, such as names, contact details, and departments.
Inventory Management: Create an inventory management system that tracks
product quantities, restocking, and sales.
Recipe Database: Develop a recipe database where users can store and
retrieve recipes, including ingredients and instructions.
Social Media Analytics: Create a tool for analyzing social media data,
tracking trends, and generating reports.
Survey and Feedback System: Build a survey and feedback collection system
with customizable forms and reporting.
Health Tracker Dashboard: Develop a health tracking dashboard that displays
and analyzes personal health data, such as fitness and dietary information.
Expense Tracker: Develop an expense tracker app that records daily expenses
and provides spending summaries.
Library Catalog: Build a library catalog system to manage books, authors,
and borrowing records.
Movie Rating Database: Build a platform where users can track movies they've
watched and give ratings.

Web Apps
Module

This module will have you create a web app using a framework that will generate
web pages dynamically on the host server. Django for Python and Node or React
for JavaScript are two common examples of web app frameworks.

When a request is made to your web app, the Django framework will call the
appropriate Python code (a function in your [Link] ) file). The Python code
will then parse the request and prepare a response. To prepare a response, your
code might read a database, download some data from another web server, or
perform some calculations. To produce the response, a template HTML file is
populated with data created by the Python function. The response is then
automatically sent back by the Django framework. Using a framework can reduce
the time it takes to create web content. In the case of Django, you also have
the benefit of using the Python programming language to process requests.

You can read more on sites like the following:

Django Documentation and Tutorial (official site)


Django Tutorial—TutorialsPoint (tutorial site)
Django Tutorial—RealPython (tutorial site)
Introduction to [Link] (official site)
[Link] Tutorial—TutorialsPoint (tutorial site)
React Documentation (official site)
React Tutorial—TutorialsPoint (tutorial site)

Unique Requirements & Stretch Challenges

Write a web app using one of the following frameworks:

Django - Python
Node - Javascript
React - Javascript

The web app must have the following characteristics:

Must have at least two HTML pages populated by content determined by your
Python (Django) or JavaScript (NodeJS) code. However, if you use React, then
you can keep to a single page with multiple interactions.
Your software must be interactive meaning that the content displayed in your
web app must be in some part based on user input.
The web app should run on your local computer using the test server provided
by your framework.

Use the Web App [Link] template.

Stretch Challenges (select one):

Integrate a database into your web app.


Add an additional (third) dynamically generated web page to your app.

Guidance

Django:

You can use pip to install Django: pip install Django


Django projects have several files which do not need to be manually written.
The following commands are useful:
django-admin startproject my_project_name —This will create the initial
project files
python [Link] startapp my_app_name —This will create an app in your
project
python [Link] runserver —This will start your web app. You will need to
open a web browser to open the web pages.

[Link]:

The following commands are useful:


Use npm to install [Link] packages and frameworks: npm install
package_name
Initialize a [Link] project: npm init
Start your [Link] server: node [Link]

React:

The following commands are useful:


Create a new React app: npx create-react-app my-app

Project Ideas

Portfolio Website: Build a portfolio website for showcasing your projects


and achievements, including interactive galleries.
Online Forum/Discussion Board: Create a forum where users can post and
discuss topics, complete with user accounts and moderation.
Event Booking System: Build an event booking and registration system for
organizing and managing events.
File Upload and Storage: Build a file upload and storage service with user
accounts and file management.
Online Learning Platform: Build an e-learning platform with features for
course creation, student enrollment, and progress tracking.
Collaborate Code Editor: Develop a real-time collaborative code editor where
multiple users can edit and code together.
Music Player: Build a web-based music player with features for creating
playlists and streaming music from various sources.
Task Automation: Build a task automation tool that allows users to schedule
and automate repetitive tasks.
E-Commerce Store: Develop an e-commerce website with product listings,
shopping carts, and secure checkout.

Self-Chosen Project
Module

You select the programming language or the type of software to create. This can
be useful if there is a language, technology, or library that aligns well with
either your major or interests.

Unique Requirements & Stretch Challenges

Like other modules, you will need to write software to demonstrate your
capability. It is highly recommend that you communicate with your teacher
before submitting your plan to get pre-approval. In your plan you need to
identify the requirements you will fulfill. If you are learning a new
programming language, you should consider the requirements in the other
language modules.
This module cannot be done for the first or second module in the course. You
must have at least a B in the course to select this module.

Note that the module plan must be submitted ahead of time before submitting the
final module (e.g you can't submit the plan and the module on the same day as
the instructor won't have time to approve of the self-chosen project.)

Use the Self-Chosen Project [Link] template.

You need to propose a stretch challenge in your plan if you plan on pursuing
one.

Guidance

If you want to do this module, it is highly recommended to do it for one of


your last modules near the end of the course. You should do initial research
and communicate with your teacher at least a week before the plan submittal.

You might also like