Modules 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.
Sample Research Pattern
Studying a new technology can seem daunting at first. However, using a methodical approach can help you get started quickly. You may find the following approach helpful. Let's say you want to learn PowerShell, the following pattern/example may be helpful.
-
Official documentation:
- Find the official documentation. The official documentation is authoritative and typically the most comprehensive source of information about a given technology. Usually the official documentation will contain an overview, setup and getting started sections, read these first. One drawback to the official documentation is that its thoroughness often results in large quantities of information that are not necessary as you are getting started. Use your favorite search engine to find the documentation.
- Example: At the time of writing this document when I search for "PowerShell documentation" with either Google, or Bing the first item listed is the official documentation. PowerShell Documentation - Microsoft Learn
-
Carefully selected information:
- Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
-
Example:
- For a general overview of PowerShell you search wikipedia and read https://en.wikipedia.org/wiki/PowerShell
- Maybe in your study you run across the term "hash table", you might want to learn what a hash table is. A quick search on wikipedia comes up with the article https://en.wikipedia.org/wiki/Hash_table
- Now you understand what a hash table is you might want to return to the official documentation and read about hash tables in PowerShell. Everything you wanted to know about hashtables.
-
Tutorials:
-
After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. To find these, consider searching the Internet (or specific site if it has its own search feature) for terms such as “topic tutorial” or topic getting started.” Where topic is the name of the technology you are looking for.
-
Example:
- Search YouTube for "PowerShell introduction"
- Search the internet using your favorite search engine with terms like "PowerShell tutorial", "PowerShell getting started", "PowerShell introduction" etc.
-
-
AI:
- Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- If you have AI generate code, make sure to carefully scrutinize each line as AI often generates code that is not correct or does not accomplish exactly what you intended. AI generated code is usually more accurate for popular well documented languages and technologies. It is less accurate for less used technologies. Be thoughtful about how you use AI, It is a great tool if used properly.
-
Example: Here are some sample AI prompts.
- "how do I create a hashtable in powershell"
- "how do I define a function in powershell"
- "Are powershell function arguments passed by value or by reference"
- "how do I use the help feature of powershell"
Each module below will show this pattern, many modules have different technology options, the official site is listed for each technology option listed, you only need to research the one you will be using. Remember this is just a starting place, use your research abilities to find the resources necessary to complete your chosen module.
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 be documented with useful comments.
-
The software must include a README.md file at the top folder of the project. The template for each README.md 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 publicly viewable in GitHub so make sure to use good spelling, good grammar, and maintain professionalism.
-
A 4-5 minute video demonstrating the execution of the software and a walkthrough of the code must be created and uploaded. A link to the video must be included in the README.md file. The video should serve as a training video for someone else to learn what you learned. The video must include a "talking head" image of you as you describe your project.
As required for accreditation, this video must include an image of you as you present your project. This is NOT optional and if not included will result in 0 points for the assignment
-
All of the code, including the README.md 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++
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.
Getting Started
-
Official documentation: There are many c++ compilers so there is no one definitive source for documentation, however here are two popular ones.
- Microsoft C++ Language Reference
- GNU GCC (English only)
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Wikipedia C++
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "C++ Tutorial"
- "C++ Getting Started"
- "Programming in C++ using VScode"
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "how do i define a function in c++"
- "how do I copy strings in c++"
- "how do I create a class in c++"
- "explain the c++ switch statement"
Unique Module Requirements
Write one or more programs in C++ that demonstrates the following:
All of these basic requirements:
-
Variables
-
Expressions
-
Conditionals
-
Loops
-
Functions
-
Classes
-
Data structure from STL (such as a vector, list, or map)
One of these additional requirements:
-
Read and write to a file.
-
Demonstrates inheritance with virtual functions.
-
Use the
new
anddelete
operators to dynamically create objects.
Use the C++ README.md template.
Guidance
There are multiple options for getting C++, they include VSCode, Visual Studio, GNU GCC, etc. Use a search engine to find instructions how to setup a c++ compiler on your system. Since you have been using VSCode throughout the program you may want to continue with that.
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
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.
Getting Started
-
Official documentation:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Wikipedia Java
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "Java Tutorial"
- "Java Getting Started"
- "Programming in Java using VScode"
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "how do i define a function in java"
- "explain the basic java variable types"
- "what is a java expression"
- "explain java loops"
Unique Module Requirements
Write one or more programs in Java that demonstrates the following:
All of these basic requirements:
-
Variables
-
Expressions
-
Conditionals
-
Loops
-
Functions
-
Classes
-
Data structure from Java Collection Framework (such as ArrayList, TreeSet, or HashMap)
One of these additional requirements:
-
Read and write to a file.
-
Demonstrate inheritance using the
extends
andabstract
keywords. -
Create an interface and then use it with the
implements
keyword.
Use the Java README.md template.
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 Eclipse or IntelliJ to develop and run Java code. Use a search engine to find instructions/tutorials
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
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.
Getting Started
-
Official documentation:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Wikipedia Kotlin
- Comparison to Java
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "Kotlin Tutorial"
- "Kotlin Getting Started"
- "Programming in Kotlin using VScode"
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "what is a data class in kotlin"
- "explain the difference between mutable and immutable variables in kotlin"
- "how is the when keyword used in kotlin"
Unique Module Requirements
Write one or more programs in Kotlin that demonstrates the following:
All of these basic requirements:
-
Variables (mutable and immutable)
-
Expressions
-
Conditionals
-
Loops
-
Functions
-
Classes
One of these additional requirements:
-
Demonstrate the creation and modification of collections.
-
Demonstrate data classes.
-
Demonstrate the varied uses of the when keyword.
Use the Kotlin README.md template.
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 IDE (Free Community Version). This is an IDE like Visual Studio Code. Kotlin support will be installed automatically. 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
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.
Getting Started
-
Official documentation:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Wikipedia R (programming language)
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "R Tutorial"
- "R Getting Started"
- "Programming in R with VSCode"
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "how do I write output to the screen in R"
- "what datatypes does R support"
- "how do I read and write CSV files with R"
- "explain how to use dataframes in R"
- "explain how to use the case_when statement in R
Unique Module Requirements
Write multiple functions (not necessarily part of a single piece of software) in R that demonstrates the following:
All of these basic requirements:
-
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
One of these additional requirements:
-
Incorporate CSV file
-
Create process and send messages to the process
-
Use the case_when coding block
Use the R README.md template.
Guidance
-
Setup VSCode to program with R
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
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 characteristics:
-
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 function 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.
Getting Started
-
Official documentation:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Wikipedia Erlang (Programming Language)
- Wikipedia Functional Programming
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "erlang Tutorial"
- "erlang Getting Started"
- "Programming in erlang using VScode"
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "how do i user format in erlang"
- "explain pattern matching in erlang"
- "explain recursion in erlang"
- "explain lambda functions in erlang"
Unique Module Requirements
Write multiple functions (not necessarily part of a single piece of software) in Erlang that demonstrates the following:
All of these basic requirements:
-
Display output to the screen using
format
. -
Pattern Matching in function parameters
-
Recursion
-
Guards
-
Lists
-
Using lambda functions with
lists:map
,lists:filter
, orlists:foldl
One of these additional requirements:
-
Throwing and handling exceptions
-
Create process and send messages to the process
-
Use the
case of
coding block
Use the Erlang README.md template.
Guidance
To setup your development environment complete the following:
-
Install Erlang, 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
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, including HTML and CSS.
The core client-side JavaScript language consists of some common programming features that allow you to do things like:
-
Store useful values inside variables.
-
Operations on pieces of text (known as "strings" in programming).
-
Running code in response to certain events occurring on a web page.
-
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.
Getting Started
-
Official documentation:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Wikipedia JavaScript
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "JavaScript Tutorial"
- "JavaScript Getting Started"
- "Programming in JavaScript using VScode"
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "how do I run javascript in a browser"
- "what is node.js"
- "explain anonymous functions in javascript"
- "how can I run javascript from the command line"
Unique Module Requirements
Write multiple functions (not necessarily part of a single piece of software) in JavaScript that demonstrates the following:
All of these basic requirements:
-
Display output to the screen. This can be done with Node.js 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)
One of these additional requirements:
-
Demonstrate throwing and handling exceptions
-
Create DOM structures with CSS (if using browser), or use 2 more npm packages if using Node.js.
Use the JavaScript README.md template.
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 Node.js 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#
C# (pronounced "See Sharp") is a modern, object-oriented, and type-safe programming language. C# enables developers to build many types of secure and robust applications that run in .NET. C# has its roots in the C family of languages and will be immediately familiar to C, C++, Java, and JavaScript programmers. This tour provides an overview of the major components of the language in C# 11 and earlier. If you want to explore the language through interactive examples, try the introduction to C# tutorials.
C# is an object-oriented, component-oriented programming language. C# provides language constructs to directly support these concepts, making C# a natural language in which to create and use software components. Since its origin, C# has added features to support new workloads and emerging software design practices. At its core, C# is an object-oriented language. You define types and their behavior.
Several C# features help create robust and durable applications. Garbage collection automatically reclaims memory occupied by unreachable unused objects. Nullable types guard against variables that don't refer to allocated objects. Exception handling provides a structured and extensible approach to error detection and recovery. Lambda expressions support functional programming techniques. Language Integrated Query (LINQ) syntax creates a common pattern for working with data from any source. Language support for asynchronous operations provides syntax for building distributed systems. C# has a unified type system. All C# types, including primitive types such as int and double, inherit from a single root object type. All types share a set of common operations. Values of any type can be stored, transported, and operated upon in a consistent manner. Furthermore, C# supports both user-defined reference types and value types. C# allows dynamic allocation of objects and in-line storage of lightweight structures. C# supports generic methods and types, which provide increased type safety and performance. C# provides iterators, which enable implementers of collection classes to define custom behaviors for client code.
C# emphasizes versioning to ensure programs and libraries can evolve over time in a compatible manner. Aspects of C#'s design that were directly influenced by versioning considerations include the separate virtual and override modifiers, the rules for method overload resolution, and support for explicit interface member declarations.
Getting Started
-
Official documentation:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Wikipedia C Sharp (programming language)
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "C# Tutorial"
- "C# Getting Started"
- "Programming in C# using VScode"
- "Programming in C# using Visual Studio"
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "what is c# used for"
- "explain how to read and write files in c#"
- "what are abstract classes in C#"
- "explain class inheritance in c#"
Unique Module Requirements
Write one or more programs in C# that demonstrates following:
All of these basic requirements:
-
Variables
-
Expressions
-
Conditionals
-
Loops
-
Functions
-
Classes
-
Structures and Unions
One of these additional requirements:
-
Read and write to a file.
-
Demonstrate inheritance using the
extends
andabstract
keywords.
Use the C# README.md template.
Guidance
You can use either Visual Studio or VSCode to write C# programs. Visual Studio is Microsoft's full featured IDE, the community edition is free. Visual Studio requires more resources but has more features than VSCode. VSCode is lighter weight and you probably have it installed. For larger projects Visual studio is probably a better option. Use documentation or find a tutorial to setup your development environment.
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
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 Node.js or Deno and in your apps.
TypeScript understands JavaScript and uses type inference to give you great tooling without additional code.
Getting Started
-
Official documentation:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Wikipedia TypeScript
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "TypeScript Tutorial"
- "TypeScript Getting Started"
- "Programming in C++ using VScode"
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "how do I add typescript to a project"
- "how do I create classes with typescript"
- "what are the benefits of using typescript in a project"
- "describe how exception handling works with typescript"
Unique Module Requirements
Write multiple functions (not necessarily part of a single piece of software) in TypeScript that demonstrates the following:
All of these basic requirements:
-
Display output to the terminal.
-
Recursion
-
Classes
-
Lists
-
Asynchronous functions
One of these additional requirements:
-
Demonstrate throwing and handling exceptions
-
Use TS Lint
-
Incorporate Jest in your project
Use the TypeScript README.md template.
Guidance
Typescript is a library add-on to a JavaScript project, to setup your typescript project use the documentation at https://www.typescriptlang.org/download/.
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 Express.js.
-
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
The Rust language is used for embedded and application development. While similar 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.
Getting Started
-
Official documentation:
- Rust (official site)
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Wikipedia Rust
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "Rust language Tutorial"
- "Getting Started rust programming language"
- "Programming in rust using VScode"
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "what is the rust language used for"
- "explain rust variables including mutable and immutable types"
- "explain how to create rust functions"
- "explain ownership and reference in regards to rust functions"
Unique Module Requirements
Write one or more programs in Rust that demonstrates the following:
All of these basic requirements:
-
Variables (mutable and immutable)
-
Expressions
-
Conditionals
-
Loops
-
Functions (ownership or reference)
One of these additional requirements:
-
Use a data structure (e.g. Vec, LinkedList, Hashmap).
-
Use slicing.
-
Use object oriented techniques using both
struct
andimpl
.
Use the Rust README.md template.
Guidance
To setup your development environment complete the following:
-
Install Rust.
-
Visual Studio Code has support for Rust. The Rust Analyzer can be installed in Visual Studio Code. The cargo build tool can be run from the terminal.
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
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.
Getting Started
-
Official sites:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Wikipedia Cloud database
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "Firebase Getting Started"
- "firestore Tutorial"
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "how to setup a dynamodb"
- "how do i setup a firestore database"
- "how do I insert records into a firestore database"
Unique Module Requirements
Write a program that interacts with a cloud database. The software must have the following characteristics:
All of these basic requirements:
-
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.
One of these additional requirements:
-
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.
Use the Cloud Databases README.md template.
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.
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
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 familiar Python programming language.
Getting Started
-
Official sites:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Wikipedia Data Science
- Pandas 10 Minute Tutorial (official site)
- Pandas Getting Started Tutorials (official site)
- Kaggle.com (free datasets)
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "Panda data analysis Tutorial"
- "How to use BeautifulSoup for data analysis"
- "TensorFlow tutorial"
- Free datasets for analysis
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "how do I create a graph with pandas"
- "how do I calculate the mean of a dataset using pandas"
- "how do I install pandas"
Unique Module Requirements
Write software to analyze a set of data to answer two questions about that data that demonstrates the following:
All of these basic requirements:
-
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.
One of these additional requirements:
-
Draw a graph showing some of the results.
-
Identify a third question from your dataset and write code to answer it.
Use the Data Analysis README.md template.
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 Kaggle.com. You should look for a dataset that has good documentation, which will help you understand the data.
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
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 including 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.
Getting Started
-
Official documentation:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Game Engines
- List of Game Engines
- Arcade Examples (official site)
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "python arcade tutorial"
- "how to create a game with python"
- "getting started with python arcade"
- "getting started with pygame"
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "What are the major differences between pygame and arcade"
- "describe the features of the game pong"
- how do I save a game the python arcade
Unique Module Requirements
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 need to use C# or C++ for scripting to meet the requirement of at least 100 lines of code. Visual scripting like Blueprint will not satisfy the 100 lines of code requirement.
The game must have the following characteristics:
All of these basic requirements:
-
The game should display graphics
-
The game should take user input from the keyboard or mouse
-
The game should have moveable objects
One of these additional requirements:
-
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.
Use the Game Framework README.md template.
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.
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
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.
Getting Started
-
Official sites:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "Google maps API Tutorial"
- "Getting started with Bing maps"
- "GIS tutorial"
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "what is GIS"
- "how do i get started in GIS with google maps"
- "what is arcgis"
Unique Module Requirements
Create a website or mobile app that generates a map using a mapping library like ArcGIS, Google Maps, or Bing maps. The map should include markers showing useful information. The map must demonstrate the following:
All of these basic requirements:
-
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).
One of these additional requirements:
-
Obtain data automatically from a server publicly 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).
Use the GIS Mapping README.md template.
Guidance
GIS mapping services require you to create an account. ArcGIS, Google Maps, and Bing Maps all have free developer accounts you can create. You should consider using Javascript and HTML to create your map. ArcGIS offers many detailed tutorials for different programming languages.
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
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.
Getting Started
-
Official sites:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "Kotlin Tutorial"
- "MAUI getting Started"
- "Android app tutorial"
- "IOS app tutorial"
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "what are the pros and cons of using MAUI to create apps"
- "how does navigation work in android apps"
- "how does permissions work in android apps"
Unique Module Requirements
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
- NET MAUI - Creates Cross-platform apps for Android and iOS
The app must demonstrate the following:
All of these basic requirements:
-
Have at least one screen
-
Be interactive with the user (e.g. responds to inputs by displaying appropriate outputs)
One of these additional requirements:
-
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
Use the Mobile App README.md template.
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:
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
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, data link, 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 computer 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.
Getting Started
-
Official documentation:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Wikipedia OSI Model
- Wikipedia Client-Server model
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "OSI model overview"
- "tcp tutorial"
- "what is an internetwork"
- "wireshark tutorial"
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "what is the difference between client-Server and peer-ro-peer networking"
- "what is the difference between tcp and udp"
- "explain how the http protocol works"
- "What is a request for comment"
- "what is a protocol analyzer"
- "explain what tcp and udp ports are"
Unique Module Requirements
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 must demonstrate the following:
All of these basic requirements:
-
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.
One of these additional requirements:
-
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.
-
Obtain information from a local file or database in response to a request from the client or another peer.
Use the Networking README.md template.
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:
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
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. There is a standard SQL language defined by ISO 7095, however each vendor has variations typically with added features.
Getting Started
-
Official sites:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Wikipedia Relational Databases
- Wikipedia SQL
- Oracle Relational Databases
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "How to install import sqlite in python"
- "SQLite python tutorial "
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "how do i insert a row with sqlite"
- "how do I create a table with sqlite"
- "what is a join in relational databases"
- "describe the different types of joins in SQL"
Unique Module Requirements
Write a program that interacts with a relational database using SQL. The software must demonstrate the following:
All of these basic requirements:
-
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.
One of these additional requirements:
-
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.
Use the SQL Relational Database README.md template.
Guidance
You should consider using Python and SQLite for this module. SQLite is already supported in Python by importing the sqlite3 library.
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
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, and ASP.NET are a few 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 views.py
) 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.
Getting Started
-
Official documentation:
-
Carefully selected information: Informational sites such as Wikipedia often contain great background information about specific technologies or generic principles.
- Wikipedia Dynamic web page
- Wikipedia Django (web framework)
- Examples using Node.js and javascript
-
Tutorials: After reading some of the official documentation, consider looking for tutorials on YouTube, Blogs, or Tutorial sites. Here are some search hints.
- "Getting started with ASP.NET"
- " Getting Started with Django"
- "Dynamic web sites with django tutorial"
-
AI: Asking good questions of AI can also help you learn a language or technology. Be careful and recognize that AI is not always correct.
- "How do I create ASP.NET using VSCode"
- "How create a simple Django web site"
- "How do you process form data in Django"
- "How do i process query strings in Django"
Unique Module Requirements
Write a web app using one of the following frameworks:
- Django - Python
- Node - Javascript
- React - Javascript
- ASP.Net - C# or VB.net
The web app must demonstrate the following:
All of these basic requirements:
-
Must have at least two HTML pages populated by content determined by your Python (Django), JavaScript (NodeJS), or ASP.NET 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.
One of these additional requirements:
-
Integrate a database into your web app.
-
Add an additional (third) dynamically generated web page to your app.
Use the Web App README.md template.
Guidance
You are encouraged to use Django with Python for this module. In addition to the tutorials in the overview section above, the following notes may be useful to you:
-
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 manage.py startapp my_app_name
—This will create an app in your project -
python manage.py runserver
—This will start your web app. You will need to open a web browser to open the web pages.
-
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.
Useful Links:
- Return to: Week Overview | Course Home