Skip to content
This repository was archived by the owner on Sep 12, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs/units/3_unit/05_lesson/lesson.md.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
* [Project spec - Cross-Country Canada][] ([docx][3]) ([pdf][4])
* [Project spec - Daily Planner][] ([docx][5]) ([pdf][6])
* [Oregon Trail starter code](https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/3_unit/05_lesson/Unit_3_Project_Oregon_Trail_Starter_Code.py)
* [Cross-Country Canada starter code](https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/3_unit/05_lesson/Unit_3_Project_Cross_Country_Canada_Starter_Code.py/)
* Solution (access protected resources by clicking on "Additional Curriculum Materials" on the [TEALS dashboard](https://www.tealsk12.org/dashboard/))
* Update the _Project Spec_ as needed to meet your grading requirements.
* Try creating your own variation on the Oregon Trail code so you are familiar with the potential challenges and bugs your students will hit.
Expand Down Expand Up @@ -53,7 +54,7 @@

### 2. Project overview

* Demo the Oregon Trail finished project.
* Demo the finished project.
* Give out the project spec and go over game rules.

### 3. Planning
Expand Down
152 changes: 30 additions & 122 deletions docs/units/supplemental/calculator_canada.md.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,60 +6,31 @@
<a href="https://tealsk12.github.io/2nd-semester-introduction-to-computer-science/changelog.md.html">Change Log</a>


# Project- Final Project Alternative or Supplement (True North Edition)
# Project - Final Project Alternative or Supplement
# The Financial Calculator Project

* [printable project spec][]
* [editable project spec][]
Students will design, plan, and implement a medium- to large-scale final project involving financial literacy. Students can work individually, or with a partner.

Students will design, plan, and implement a medium- to large-scale
final project involving financial literacy. Students can work individually, or with a partner.
## Learning Objectives

## Overview
Students will be able to...

During this course, you have learned a huge amount about
computer science and programming in general, and Python in particular.
In this project, you will put all of that knowledge,
along with some new skills you will develop around design,
planning, and project management, to build a relatively large and
complex financial application that _you_ choose.
You should
ultimately produce a project that is interesting, useful, and challenging.
To enhance the efficacy of the financial application, you will learn how to read user input data from a CSV file,
and possible provide output via a file as well.
* Design, plan and implement a larger project
* Use computing as a tool for financial analysis
* Understand that the software design cycle is an ongoing, reflective process
* Program an application that reads and writes data from and to CSV (Comma Separated Value) files

---

### Emphasize with students ...

#### BC Mathematics Computer Science 11 Content - Use of Computing for Financial Analysis

Use this opportunity to apply software to do financial calculations.
Afterall, what's tedious for a human, may be easy for a computer.
It's up to the software developer to design a product that takes advance of the computer's powers,
to give the user a smooth experience and helpful product.

Think about the most recent times when you used a calcuator.
These are possible candidates. When and why did you need to use calculator?
The computer is also great to processing lots of data with accuracy and speed.
What are some financial scenarios where we need to record and analyze lots of data?

Here are some examples:
- Student loan calculator and tracker
- Holiday budget planner, currency convertor, and expense tracker
- Personal budget and expense/income tracker
- Post-secondary "Dream School" financial cost calculator and analyzer and planner
## Materials/Preparation
* [printable project spec](calculator_canada_project_spec.pdf)
* [editable project spec](calculator_canada_project_spec.docx)
* Students should each have their [final project plan organizer](https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/8_unit/final_project_plan_organizer.docx) and [final project development plan](https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/8_unit/final_project_development_plan.docx)

---
## Instructor's Notes

### Project Phases

## Details

### 1. Project Phases

This project will be significantly larger in scope than any of your previous assignments, so there will be more design and planning than before. More importantly, though, rather than be given a well-defined specification, _YOU_ will be setting the requirements for your project by coming up with an idea, fleshing out the details, and defining the steps necessary to complete your program.

To help you through this process, there will be several steps to this project. You must complete **all** of the steps **in order** for your project to be successful. In fact, _half_ of your grade will be based not on how well your program works, but on how well you completed the design and planning process.
This project will be significantly larger in scope than any of students' previous assignments, so there will be more design and planning than before. More importantly, though, rather than be given a well-defined specification, students will be setting the requirements for the project by coming up with an idea, fleshing out the details, and defining the steps necessary to complete their program. Emphasize with the students that they must complete **all** of the steps **in order** for their project to be successful. _Half_ of the grade will be based not on how well their program works, but on how well you completed the design and planning process.

The project includes these applied design phases:

Expand All @@ -70,97 +41,34 @@
5. _Making_ - Task project management processes (task management schedule) to work collaboratively to coordinate production, ensuring that your software goals are met
6. _Sharing_ - Share progress; design an how to promote product with end-users; critically reflect on design thinking and processes, identify new design goals and future work

---

### Emphasize with students ...

#### BC ADST Computer Programming 11 Big Ideas - The Design Cycle
#### Curricular Competencies for Applied Design

Software development process is iterative and agile process.
The actual "coding" is done during Phase 5 "Making".
Before the designer dives into coding, it is crucial to spend enough time flushing through the idea, and doing some sketches of what using the program will look like.

The Prototype phase is meant to be quick and efficient, using materials that are easily available. This can be a pencil and paper sketch of a flowchart, and sketch of the software interface, what things will look like when the client uses the software. What does input (and data format) does it prompt from the user? What output will it generate?

The Testing phase here refers to testing the prototype design, and not seeing if your code works. It means getting others (possibly potential users) to look at your prototype, and see if its usage makes sense. Give the tester a scenario, and ask them what they would do, and then tell them what result or action would happen next. The tester's response and feedback should be observed and used to make a new iteration of the design.

Note: Generally, using the console to type/read input/output is not user-friendly. Therefore, in this project, we can solve this problem by learning how to read/write data from a file. (See note about parsing CSV files below). It may not be as pretty as a graphical interface, but as least it's efficient. In fact, when a scientist or financial analyst is focussed on crunching numbers and analyzing results, they prefer skipping the graphical interface, and working with data that is create/provided in a simple text format. It is also common practice in business applications to interface data with a program like Excel, which is why the CSV format is convenient.
Clarify with the students that the Testing phase here refers to testing the prototype design, and not seeing if program code works.

---

### 2. Progress Tracking

In phase 3, you will complete a Final Project Spec and in phase 4 you will complete a Final Project Schedule. These documents will be your guides in the development Making phase and will help you stay on track and aware of your progress. Throughout the development phase of the project, you will be expected to keep your spec and plan up-to-date and make adjustments as you get ahead or behind, as requirements change, or as tasks or features get re-prioritized. At the end of each coding day, your spec and plan documents should be updated to reflect the current state of your project, and you will check in with an instructor at least once a week to make sure things are on track.

### 3. Implementation Requirements

#### Complexity and Creativity

Your final project should be sufficiently complex and large-scale to push your limits as a programmer, but not so sophisticated that you are not able to complete it in the time allotted. The complexity in your project should come from the _design_ and the _algorithms_ and not from the _code_. (That is, you cannot meet the complexity requirement simply by writing a lot of code. Your code must be challenging or interesting in some meaningful way.) In addition, you should not add complexity by introducing peripheral elements, such as graphics or sound effects. (Your program can certainly have these, but they will not be considered in determining the projects complexity.)

In addition, one of the main goals of this project is to allow you to unleash your creativity and allow you to create something of interest to you. To achieve this, your project must show some level of creativity or personalization that makes it your own. Simply creating your own version of some existing application will not fully meet this requirement.

For both the complexity and creativity requirements, you should talk to the instructors early and often to ensure your project is in line with our expectations.

---

### Emphasize with students ...

#### BC Mathematics Computer Science 11 Curricular Competencies - Understanding and solving; Apply flexible and strategic appoaches to solving problems.

In our course so far, students know how to use the console to get input from a user, and to display output.
In an actual financial application, a GUI (graphical user interface) is needed to make it easy for a client to use the software,
especially when more than one piece of input information is required from the user.
Another possible approach is to read the information (input data) from a file that the user prepares ahead of time.

One popular input data format is the CSV (comma separated file) that can be created by a spreadsheet program like excel.
Python has a built in CSV parser library that we can use.
Students should first try these exercises as practice: https://realpython.com/python-csv/

---
Reference: [BC Computer Programming 11 - Curricular Competency](https://curriculum.gov.bc.ca/curriculum/adst/11/computer-programming)

#### Documentation and Style
### Progress Tracking

As with all previous projects, your program must be well-written, well-documented, and readable. Writing code with good style is always a good idea, but in a project of this size and scope, following style guidelines will help you keep your thoughts organized and make it easier to keep track of your progress, pick up where you left off each day, and find and fix bugs. In particular, though this is certainly not a comprehensive list, pay attention to the following:
In phase 3, students will complete a Final Project Spec, and in phase 4 students will complete a Final Project Schedule. Students are expected to keep the spec and plan up-to-date and make adjustments as requirements change, or as tasks or features get re-prioritized. Encourage students to update the spec and plan documents to reflect the current state of their project, and ask them to check in with you or TEALS volunteers often to make sure things are on track. The project handout asks students to do three check-in's with you. You can make adjustment to this requirement as you see fit.

* organizing your functions/code so that they can be read and comprehended easily
* giving your functions, variables, lists, and dictionaries descriptive and meaningful names
* using the right data type (`string`, `int`, `bool`, `float`, `dictionary`, `class`) for each situation
* include comments to describe the structure of your program and track your progress
* avoiding redundancy with good use of loops, functions, and/or lists, and/or dictionaries, and/or classes
* practicing good procedural decomposition and abstraction
### Implementation

#### Required Python Elements
In our course so far, students know how to use the console to get input from a user, and to display output. In an actual financial application, a GUI (graphical user interface) is often used to make it easy for a client to use the software. However, when a scientist or financial analyst is focussed on crunching numbers and analyzing results, they sometimes prefer skipping the graphical interface, and working with data that is create/provided in a simple text format. One popular input data format is the CSV (comma separated file) that can be created by a spreadsheet program like excel. It is also common practice in business applications to interface data with a program like Excel, which is why the CSV format is convenient.

In order to show that you have fully mastered all the skills from the course, you project must include at least the following:
Python has a built in CSV parser library that we can use. Students should first try these exercises as practice: https://realpython.com/python-csv/

1. A clear way to start the program, and clear prompts or instructions for any user interaction
2. At least one loop, variable, function, and list, and more as necessary or appropriate
3. Each of these must be used correctly and meaningfully
Students may also find learning about formatting the output, such as displaying numbers in 2 decimal places, would also be helpful in this project: https://realpython.com/python-formatted-output/

* creating a list that contains
* a single element just to meet this requirement will not earn points

4. at least one user interaction
5. this can be prompting for information using ask, responding to key presses or mouse movements, or any other action that keeps the user involved
### Documentation and Style

#### Required Checkpoints
Emphasize with students that their program must be well-written, well-documented, and readable. Writing code with good style is always a good idea, but in a project of this size and scope, following style guidelines will help students keep their thoughts organized and make it easier to keep track of their progress.

At least three times during the project period, and at least once each week, you should check in with an instructor to ensure that your project is on track, that you are meeting the project requirements, and that you have the answers to any questions that might have arisen during your work. The course staff will work with you to set up a schedule for these checkpoints, but it is **your responsibility** to ensure that the meetings take place.

#### Suggested Pacing Plan
### Suggested Pacing Plan

- Day 1 - project introduction, team formation (if working with partner), brainstorm, prepare some survey or interview questions to help validate your caluclator idea.
- Day 2 - prototype and testing, sketch out solution and input/outputs, do a small example of what the input CSV would look like, and what the output would look like; get feedback from peers
- Day 3 - start of learning how to read and write data with CSV files, re-visit your design to see that it still make sense, ie
* is it easy and convenient for the user?
* does the sequence of events make sense?
* is the output meaningful and useful?
- Day 4-6 - provide detailed breakdown of tasks to focus on getting one feature at a time working; as the students are coding, they should test small amounts of code at a time, and revisit the initial design plan to see if everything still makes sense for the user
- Day 7 - sharing and presentation day to external clients and friends
- Day 1 - project introduction, team formation (if working with partner)
- Day 2-3 - prototyping and testing
- Day 4-6 - project implementation
- Day 7 - project sharing and presentation day: This can be done by asking students to present their project or orgranizing a gallery walk

[printable project spec]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/8_unit/project.pdf
[editable project spec]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/8_unit/project.docx

<!-- Markdeep: --><style class="fallback">body{visibility:hidden;white-space:pre;font-family:monospace}</style><script src="https://casual-effects.com/markdeep/latest/markdeep.min.js"></script><script>window.alreadyProcessedMarkdeep||(document.body.style.visibility="visible")</script>
Binary file not shown.
Binary file not shown.