5 Accomplishments

  1. Terminal navigation for the team and I. Resetting everyone’s wsl and directories.
  2. Deployment in the cockpit with showcasing tables and working to get our webstie avaible to the internet through Amazon.Image
  3. Mapping out website in a user-friendly way (reformatting frontend + backend homepages)
  4. Connecting all of the database pathways according to our website for the review posting static data to work.
  5. 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. Image

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 Image

Image

Image 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. Image

MCQ Reflection

Overall Grade 56/67!
Image 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.
Image
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.
Image
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.
Image
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.
Image
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.
Image
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.
Image
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.
Image
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.
Image
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.
Image
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.
Image
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.
Image
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.