2025 Trimester 2 Final Review
5 key aspects, CPT Requirements, N@TM, Project Feature, MCQ
5 Accomplishments
- Terminal navigation for the team and I. Resetting everyone’s wsl and directories.
- Deployment in the cockpit with showcasing tables and working to get our webstie avaible to the internet through Amazon.
- Mapping out website in a user-friendly way (reformatting frontend + backend homepages)
- Connecting all of the database pathways according to our website for the review posting static data to work.
- Organized the KanBan Board daily, made sure everyone had up-to-date burn down lists that we would all work on collectively to accomplish a main and individual goal.
CPT Requirements with Individual Feature & Collaboration
Requirement | My Feature Function |
---|---|
Input | Supports http and https , making our website accessible via the search bar. |
Use of List/Collection Type | Uses an SQLite database for static data storage, a dictionary in the backend, and a JSON file for structured data. |
Procedure | Accepts user inputs, displays items, and allows users to add reviews, which are stored in static data. |
Algorithm | Assigns ‘point’ values to items, enabling future features such as user preferences and recommendations (higher points = higher value). |
Functionality Demonstration | User inputs data, selects an item, and the system updates the SQLite database, demonstrating full-stack integration from frontend to backend. |
Output | Generates a link to the searched item’s page, and points are added when the item is clicked. |
Feature Code Blocks blending Individual Feature
List requests. Use of list, dictionaries and database. Code descriptions of area where you work with list (rows) and dictionaries (columns) of the database.
Located in my nigeria.py file
with app.app_context():
"""Create database and tables"""
db.create_all()
"""Tester data for table"""
nigerias = [
Nigeria(title='Kilimanjaro', comment='It was ok! The enviornment was great though.', content={'type': 'announcement'}, user_id=1, group_id=1),
Nigeria(title='McFestine', comment='Enjoyed the diverse food options!', content={'type': 'announcement'}, user_id=2, group_id=2),
Nigeria(title='Unity', comment='Amazing staff, liked the food!', content={'type': 'announcement'}, user_id=3, group_id=3),
]
Formatting response data (JSON) from API into DOM
Located in my student.py
class StudentAPI:
@staticmethod
def get_student(name):
students = {
"Arshia": {
"name": "Arshia",
"age": "16",
"role": "Scrum",
"school": "Del Norte High School"
},
"Prajna": {
"name": "Prajna",
"age": "16",
"role": "Assistant Scrum",
"school": "Del Norte"
},
"Zoe": {
"name": "Zoe",
"age": "16",
"role": "Devloper",
"school":"Del Norte"
},
"Sanya": {
"name": "Sanya",
"age": "16",
"role": "Devloper",
"school":"Del Norte"
},
"Mirabelle": {
"name": "Mirabelle",
"age": "17",
"role": "Integrator",
"school":"Del Norte"
},
"Claire": {
"name": "Claire",
"age": "16",
"role": "Devloper",
"school":"Del Norte"
},
}
return students.get(name)
Queries from database where you extract a Python List (rows). Queries are provide by a 3rd party library.
Located in my nigeria.py
def read(self):
"""
The read method retrieves the object data from the object's attributes and returns it as a dictionary.
Uses:
The Channel.query and User.query methods to retrieve the channel and user objects.
Returns:
dict: A dictionary containing the post data, including user and channel names.
"""
user = User.query.get(self._user_id)
group = Group.query.get(self._group_id)
data = {
"id": self.id,
"title": self._title,
"comment": self._comment,
"content": self._content,
"user_name": user.name if user else None,
"group_name": group.name if group else None
}
return data
Methods in “class” you created to work with columns (create, read, update, delete) create
Located in nigeria.py
def update(self):
"""
Updates the post object with new data.
Args:
inputs (dict): A dictionary containing the new data for the post.
Returns:
Post: The updated post object, or None on error.
"""
inputs = Nigeria.query.get(self.id)
title = inputs._title
content = inputs._content
user_name = User.query.get(inputs._user_id).name if inputs._user_id else None
if user_name:
user = User.query.filter_by(_name=user_name).first()
if user:
user_id = user.id
else:
return None
# Update table with new data
if title:
self._title = title
if content:
self._content = content
if user_id:
self._user_id = user_id
try:
db.session.commit()
except IntegrityError:
db.session.rollback()
logging.warning(f"IntegrityError: Could not update post with title '{title}' due to missing group_id.")
return None
return self
def delete(self):
"""
The delete method removes the object from the database and commits the transaction.
Uses:
The db ORM methods to delete and commit the transaction.
Raises:
Exception: An error occurred when deleting the object from the database.
"""
try:
db.session.delete(self)
db.session.commit()
except Exception as e:
db.session.rollback()
raise e
@staticmethod
def restore(data):
for post_data in data:
_ = post_data.pop('id', None) # Remove 'id' from post_data
title = post_data.get("title", None)
post = Nigeria.query.filter_by(_title=title).first()
if post:
post.update(post_data)
else:
post = Nigeria(**post_data)
post.update(post_data)
post.create()
Repeated for all 6 different countries
N@TM Review of our team and Others
OurWebsite’s Presentation Feedback
Improve: People recommended to add more features, as some of them may seem repetitive or not as intereseting. They also gave critisim on the overall presentation, and said that it would’ve been done more smoothly. This will defintley help for when we make the College Board video, and the next step would be to address these concerns.
Keep: People liked the organization of our website, and thought some of our features were fun to play aroundn with. The color scheme was also complemented, people said it suits the theme of our website.
MCQ Reflection
Overall Grade 56/67!
Q5
Answer: C ; Incorrect Answer: D
Answer D is incorrect. The code segment “ticket price <- 12 ; IF age ≤ 12 OR age ≥ 60 ; ticketPrice <- 9 ; ELSE ticketPrice <- ticketPrice + 5” is incorrect because this code segment will set “ticketPrice” to 17 for all purchasers between the ages of 12 and 60, regardless of whether or not the movie is 3-D.
Answer C is correct. The code segment “ticket price <- 12 ; IF age ≤ 12 OR age ≥ 60 ; ticketPrice <- 9 ; IF is 3D ; ticketPrice <- ticketPrice + 5” initially sets ticketPrice to 12, and then changes the price to 9 only for children and seniors. The code segment then increases ticketPrice by 5 for 3-D movies.
Q8
Answer: C ; Incorrect Answer: B
Answer B is incorrect because the programs will display different values.
Answer C is correct becuase the programs each display ten values, but each value displayed by program B is one greater than the corresponding value from the program A. Program A displays 1 2 3 4 5 6 7 8 9 10 and program B displays 2 3 4 5 6 7 8 9 10 11.
Q10
Answer: B ; Incorrect Answer: A
Answer A is incorrect because “MoveXTimes 2 ; RightXTimes 1 ; MoveXTimes 3” moves the robot forawrd two squares, rotates it right one time so that the robot faces the bottom of the grid, and then moves the robot forward three squares.
Answer B is correct because “MoveXTimes 2 ; RightXTimes 3 ; MoveXTimes 3” moves the robot forward two squares, rotates it right three times so that the robot faces the top of the grid, and then moves the robot forward three squares to the gray square.
Q11
Answer: B ; Incorrect Answer: D
Answer D is incorrect because “NEITHER_HERE_NOR_THERE” can be shortened using byte pair encoding. For example, “NEIT* ER_* &NOR_T* &” by replacing each instance of “HE” with “* “ and each instance of “RE” with “&”
Answer B is correct because it is not possible to use byte pair encoding in the string “LEVEL_UP” because no pair of characters appears in the string more than once.
Q14
Answer: B ; Incorrect Answer: D
Answer D is incorrect because “NEITHER_HERE_NOR_THERE” can be shortened using byte pair encoding. For example, “NEIT* ER* &NOR_T* &” by replacing each instance of “HE” with “* “ and each instance of “RE” with “&”
Answer B is correct because it is not possible to use byte pair encoding in the string “LEVEL_UP” because no pair of characters appears in the string more than once.
Q16
Answer: B ; Incorrect Answer: D
Answer D is incorrect because “NEITHER_HERE_NOR_THERE” can be shortened using byte pair encoding. For example, “NEIT* ER* &NOR_T* &” by replacing each instance of “HE” with “* “ and each instance of “RE” with “&”
Answer B is correct because it is not possible to use byte pair encoding in the string “LEVEL_UP” because no pair of characters appears in the string more than once.
Q18
Answer: B ; Incorrect Answer: D
Answer D is incorrect because “NEITHER_HERE_NOR_THERE” can be shortened using byte pair encoding. For example, “NEIT* ER* &NOR_T* &” by replacing each instance of “HE” with “* “ and each instance of “RE” with “&”
Answer B is correct because it is not possible to use byte pair encoding in the string “LEVEL_UP” because no pair of characters appears in the string more than once.
Q21
Answer: B ; Incorrect Answer: A
Answer A is incorrect because “MoveXTimes 2 ; RightXTimes 1 ; MoveXTimes 3” moves the robot forawrd two squares, rotates it right one time so that the robot faces the bottom of the grid, and then moves the robot forward three squares.
Answer B is correct because “MoveXTimes 2 ; RightXTimes 3 ; MoveXTimes 3” moves the robot forward two squares, rotates it right three times so that the robot faces the top of the grid, and then moves the robot forward three squares to the gray square.
Q22
Answer: B ; Incorrect Answer: D
Answer D is incorrect because “NEITHER_HERE_NOR_THERE” can be shortened using byte pair encoding. For example, “NEIT* ER* &NOR_T* &” by replacing each instance of “HE” with “* “ and each instance of “RE” with “&”
Answer B is correct because it is not possible to use byte pair encoding in the string “LEVEL_UP” because no pair of characters appears in the string more than once.
Q55
Answer: B ; Incorrect Answer: D
Answer D is incorrect because “NEITHER_HERE_NOR_THERE” can be shortened using byte pair encoding. For example, “NEIT* ER* &NOR_T* &” by replacing each instance of “HE” with “* “ and each instance of “RE” with “&”
Answer B is correct because it is not possible to use byte pair encoding in the string “LEVEL_UP” because no pair of characters appears in the string more than once.
Q57
Answer: B ; Incorrect Answer: D
Answer D is incorrect because “NEITHER_HERE_NOR_THERE” can be shortened using byte pair encoding. For example, “NEIT* ER* &NOR_T* &” by replacing each instance of “HE” with “* “ and each instance of “RE” with “&”
Answer B is correct because it is not possible to use byte pair encoding in the string “LEVEL_UP” because no pair of characters appears in the string more than once.
Q61
Answer: B ; Incorrect Answer: D
Answer D is incorrect because “NEITHER_HERE_NOR_THERE” can be shortened using byte pair encoding. For example, “NEIT* ER* &_NOR_T* &” by replacing each instance of “HE” with “* “ and each instance of “RE” with “&”
Answer B is correct because it is not possible to use byte pair encoding in the string “LEVEL_UP” because no pair of characters appears in the string more than once.
Reflection
Strengths: I think that I really improved with my overall tech sense and tech talk from last trimester. AT the end of last trimester I said that I wanted to improve on workign iwth the backend and implementing it with our frontend in our website, and I think that I greatly improved on that escpecially since I took on the role of being Backend Admin Engineer, where I customized our backend UI and created screens for admin functions. I ensured that db_backup, db_init, and db_restore are supported and working properly.
Weaknesses: I think that a weakness of mine was during the introduction of the API’s and non-static data being implemented into our website. Our group started to fall behind and I noticed that I wasn’t able to just get by with doing the simple tasks in the tasks. Ir eally had to work with my group and Mr. Mort in order to learn from our mistakes and create a successful website.
Project Future Plans: We really need to work on making our project presentable to submit for the college board Exam. We don’t fully have our full stack Demo where I think we will be able to earn a 5. We took the N@TM feedback and will be adding more features that are interactable.
Future Plans in CS: I plan on taking on a data analyst interniship this summer at a pharmaseutical company down in La Jolla. This class has taught me a lot fo life skills and fundemental coding knowledge that gave me this opportunity, which I am very thankful for. Since I am a senior and already submitted all of my college application, I know what I am going to major in college. This class helped me to decide that I want to do something with Computer Science and the STEM department. I look forward to continuing my carrer after this class.
Self Assessment
Concept | Grade | Notes |
---|---|---|
Docse | 5/5 | Accurate Burndown List, Collaboration, and Communication |
Fullstack Demo, CPT Requirements | 1.5/2 | Needed more algorithmic code and more features to Demo Full Stack, only part works. |
Feature | 1/1 | In-depth code blocks and summaries for the connection to overall Project |
MCQ Reflection | 1/1 | Full Reflection and missed question improvements. |
Presentation 10th Point | 0.6/1 | Collaborated with other teams, self-graded strengths and weaknesses, future in CS (internships) |
Total | 9.1/10 | I deserve at least a 9/10 because I have worked diligently all trimester and the trimester before with my team in order to create a successful website available to the internet. I am able to navigate WSL and create an individual feature that I will submit for the College Board Exam. |