Coursework for ValTech Portfolio

Freshman (AP Computer Science Principles)

Semester 1

During the first semester, our primary focus was creating apps and working with JavaScript. We learned about each phase of the production process, from the brainstorming stage to the finished project.

One of the projects we worked on was an App Development Planning Guide. In this project, the goal was to work through each step in creating a successful app. After brainstorming a topic, I interviewed several classmates to understand user interests. After planning and implementing the app, I received feedback from classmates and reflected on the app-making process.

The other two works are both apps that we had to re-create. The first of which is this Random Forecaster app. The app’s purpose is to display the next day’s weather forecast for a random city. While programming this app, we learned how to apply public datasets and utilize random number generation.

Another app we worked on was the Quote Maker app. The app aims to allow a user to create their quote. In this app, we utilized conditionals as well as text formatting. The app helped us experiment with formatting, such as font family, font size, text color, and components like a draggable slider.

Semester 2

In the second semester, we focused more on the internet, specifically the conceptual and ethical side of things. We also learned more about concepts we needed to know for the AP Computer Science Principles exam.

One project we worked on was the Internet Dilemmas Project. During the project, we learned about technological dilemmas that relate to the use of the internet. One particular issue that we concentrated on was net neutrality and the potential effects of losing it.

Another assignment we worked on was an activity on crowdsourced data. I chose to research big data and its positive impact. Overall, we learned how merging resources and computing power can lead to discoveries and information.

My final work is a group assignment about networks. This assignment taught us about networks and how they are created redundantly on purpose. To ensure that clients can still connect during an outage, other paths must be available for information to get across.

Sophomore (AP Computer Science A)

Semester 1

In the first semester of the class, we learned about Java and object-oriented programming. For example, we learned how to use classes and inheritance to achieve our goals.

Our first major project was a maze solver using Karel the Robot. This project summarised what we learned about superclasses and subclasses. The robot follows the right wall to reach the end of the maze.

Another project we worked on was the Grocery List program. This assignment introduced us to string formatting and user input. The program has the user input prices for five items. Afterwards, their prices are summed and provided to the user.

One of the final assignments we worked on that semester was the Fibonacci program. The purpose of having us write this program was to help us become more comfortable with recursive programming. The program returns the Fibonacci sequence term number that the user provides.

Semester 2

During the second semester, we learned more about Java and began preparing for the AP Computer Science A exam. Primarily, we learned more about ArrayLists, sorting, and inheritance.

One of the first programs we wrote in the second semester was the BondMovieSeries class. The program loads statistics about several movies, sorts them, and displays them in a list. Writing this program taught us more about sorting algorithms like bubble sort and Big O notation.

Another program we wrote is the Store program. The program imports a list of items with ids and inventory values which are sorted and then can be searched. This program was particularly significant because it introduced us to the Comparable interface, binary searches, and another sorting algorithm, merge sort.

The last classes we wrote before we took the AP test were the Farm class, the Animal interface, and the farm animal subclasses. This assignment taught us how to create and implement an interface into subclasses. It also taught us how interfaces can enforce similar methods between classes.

Junior (IB HLY1 Computer Science and Mechatronics)

Semester 1

In the first semester of IBHL Y1, we mainly focused on learning how to use and implement data structures. We also used many recursive methods to understand how recursive programming can be more beneficial than non-recursive in many situations.

The first data structure we learned how to implement was a LinkedList. While writing the class, we learned how the data is stored and how a LinkedList is iterated. Because LinkedLists use nodes and references to next and previous nodes, a LinkedList doesn’t waste memory and can grow and shrink as needed.

Another data structure we implemented was a binary tree. Similar to a LinkedList, a binary tree uses nodes that have references to child nodes. Implementing the data structure taught us how binary trees function and the pros and cons of using them. For example, although searching can be more efficient, modifying a tree can take much longer.

Finally, we also learned how to use maps and sets. The program loads a list of names and emails and allows the user to search by last name. Maps allowed us to map each name to an email address. Using maps and sets made it easier to search and manage the list of data.

Semester 2

During the second semester of IBHL Y1 Computer Science, our focus expanded beyond programming and delved into practical applications. In my Mechatronics class, we moved on from creating simple parts to recreating parts with more complex geometry. Within both classes, we explored various topics and tools that allowed us to enhance and broaden our understanding of data structures and design principles.

One significant project we worked on involved the utilization of hashing and hash codes. Our data consisted of “Item” objects that had an ID and inventory number. By using hash codes, we were able to map each item’s ID to its inventory number, optimizing the retrieval process. Understanding hashing and hash codes provided us with a powerful tool for data organization and retrieval, contributing to the overall efficiency of our program.

Furthermore, we explored the implementation of a priority queue, a data structure that maintains a collection of elements with assigned priorities. Building our own priority queue allowed us to delve deeper into the algorithms involved in efficiently managing prioritized data. This knowledge equipped us with a powerful tool for handling scenarios where efficient sorting and prioritization of elements are crucial.

Finally, In my Mechatronics class, we recreated more advanced parts in SolidWorks. One part we created, titled “Upper Housing,” involved the application of more advanced SolidWorks tools such as lofting, sweeping, shelling. With these tools at our disposal, we were able to create complex three-dimensional models. By creating this part, I was able to gain a better understanding of SolidWork’s more advanced features.

Senior (IB HLY2 Computer Science and C++)

Semester 1

The main focus of our first semester of IBHL Computer Science Year 2 was completing our internal assessment, consisting of developing an application for a client for planning to implementation. At the same time, in my C++ programming class, we learned everything from the previous year's Java lessons.

Through individual research and testing, I learned how to use C# and Typescript to develop a web application with Vue.js and a REST API backend for my computer science internal assessment. The web app interfaced with a Cosmos database and authentication on Azure web services. I had only developed a static website before, so working with web services, learning how modern websites work, and learning MVC API structuring was very interesting.

One lab we did in C++ involved reading and iterating through the characters in a file. Then we counted and kept track of how many times each word occurred. This lab involved the various subjects we learned in the previous labs including vectors, iostreams, and print formatting. I also learned how to use maps and the standard algorithm library.

Finally, I learned how to create classes in C++ through the creation of a linked list and stack class. I learned how to create header classes to define a class and use a separate .cpp extension file to implement the class. Doing this ensures that if one file is changed, not all files have to be recompiled. It also helps to reduce complexity and the total number of lines of code. I gained a better understanding of C++'s redundancy-reducing abilities.

Semester 2

As our senior year came to a close, much of our focus was on individual projects, preparing for exams, and extending our learning. In IBHL Computer Science and in my C++ programming class, we prepared for the IB exam and worked on a game development project that I chose to do in Unity. In IBHL Math Year 2 after finishing testing, I gave a group presentation on further calculus topics, specifically double integrals.

I am currently in the middle of developing a local multiplayer shooting/resource collection space game in Unity. I do not have any prior experience with Unity, so figuring out best practices and the best way to organize GameObjects and scripts was a challenge. The concept for my game is as follows: each timed round, players can either choose to mine gold from nearby asteroids or destroy other players' ships. Both earn them currency which can be spent in the shop in between rounds to improve their main weapon or increase their mining speed. Although it is still a work in progress, it has been fun learning Unity and C# in more detail.

In IBHL Computer Science, our time was dedicated to preparing for our upcoming IB exam, including Paper 1, Paper 2, and Paper 3. While Paper 1 and Paper 2 focus on algorithmic thinking, Paper 3 is centered on analysis of a case study and the use of technology in the real world. As practice, we completed many practice papers, studied vocabulary, and created study guides for ourselves.

Finally, in our IBHL Math class, our class is winding down and our teacher is having groups of students give presentations on further math topics, famous mathematicians, and applications of math we have learned. Our group was assigned the topic of the double integral. We learned about the similarities of the double integral to the single integral (similar Riemann's sum concept), how to evaluate a double integral, and how they can be applied in the real world. For example, it was interesting that a double integral can be used to calculate the average temperature of a metal plate over an area given a function of temperature in terms of x and y locations on that plate.