Overview
Prior to enrolling in the computer science program, I was already interested in the field and even had some minor experience working on personal projects. My main motivation for enrolling in the computer science program was because I felt that I was missing key background information that would help me become a stronger developer. Each course I took in the program helped to build my confidence in my problem-solving skills and ability to adapt to new and unfamiliar situations and knowledge. Upon reviewing the courses I have finished, I am most proud of how much my programming skills have improved. A wide variety of different problems and project types were introduced, providing valuable experience and broadening my awareness of the types of problems I will encounter in the future. I can look back at the projects I completed in each course and see how they steadily improved and provided a foundation for approaching future ones.
My initial focus had been working towards a career in software development, but after being exposed to different career paths that exist under computer science from taking the courses in this program, I’ve found that I am more interested in the data and graphics fields. It also highlighted how important it is for me to be able to be able to continue to learn and branch out regardless of where I begin my career, and I value being well-rounded. This program has also filled in the knowledge gaps I felt I was missing prior to it, making me feel more well-rounded and prepared for working environments with familiarity with the processes involved in the software development lifecycles and the roles that exist within it.
The courses in the computer science program, have provided me with plenty of opportunities to practice and improve communication within a team and with stakeholders. Working as different roles in a team throughout the different courses, including engineering, design, project management, and testing, has helped me learn to effectively communicate ideas, issues, and statuses to ensure the success of a project. The progression through each of the courses in this program and going from little-to-no knowledge to having a solid understanding of technical issues has enabled me to better adjust the level of technical language I use when communicating with people of different knowledge levels to ensure clarity and understanding. I also now have a better understanding of how to communicate with stakeholders to make sure that I can recognize their needs, including ones they may not be aware of themselves.
The courses have illustrated the importance of prioritizing security, not just for users but also companies and different stakeholders. Ensuring security is considered and planned into development from the beginning and not added as an afterthought provides a stronger sense of security and makes its implementation easier and more effective. Working on a variety of projects has helped me become more familiar and comfortable with the techniques, tools, and practices used to deliver valuable solutions while following industry standards. It has also highlighted how any one problem can have multiple correct solutions, with there rarely being only one correct way to solve them. Gaining a better understanding of data structures and algorithms, and their application, has proven how important optimization and efficiency is to the performance of a project and how it can affect available resources and the user experience.
Capstone Summary
The artifact presented for this capstone is an event tracking mobile application, originally built in CS360: Mobile Architecture and Design using Android Studio. The purpose of this project was to design and build a mobile application to run on Android that would track a user’s upcoming events. Users are able to add, update, and delete events, and view a list of current and future events.
This artifact was chosen for the capstone because it shows the greatest range of knowledge learned throughout this program. It involved design, software development, database creation and management, and the understanding and application of industry standards and has been enhanced to show how the learning objectives set for the computer science program have been met. Enhancements fall into three main categories: software engineering and design, algorithms and data structures, and databases, and are intended to add complexity and improve overall optimization and security.
Enhancement Stages
Milestone 2
The enhancements made in Milestone 2 were very heavily focused on improving user experience. Additional features were added, such as a profile screen to allow users to change their personal settings, a filtering option to help them better organize their event list, and adding a seven-day overview bar to quickly see events they have coming up in the next few days. The user interface was also redesigned to create a better flow and look more visually appealing. This included changes to the color scheme and positioning of elements in a way that made the app feel more intuitive and created more negative space for readability.
Reflection
The process of enhancing and modifying this artifact has been very rewarding. With each enhancement, I can tell that my understanding of Android Studio and user-centric design and development has deepened. It has been a few months since I originally worked on this app, so my greatest challenge was re-adjusting to working with the Android Studio IDE and writing in Java. I was able to overcome this a little by going slower than I would have preferred and started with smaller changes. Once I got the hang of it again, it became easier to work on more complex enhancements and even navigate the different resources I used for support to find the answers I was looking for.
Course Outcomes
- Employ strategies for building collaborative environments that enable diverse audiences to support organizational decision making in the field of computer science.
- Design, develop, and deliver professional-quality oral, written, and visual communications that are coherent, technically sound, and appropriately adapted to specific audiences and contexts.
- Demonstrate an ability to use well-founded and innovative techniques, skills, and tools in computing practices for the purpose of implementing computer solutions that deliver value and accomplish industry-specific goals.
Milestone 3
The SQL database in this artifact had two tables, one to store users and the other to store events. The enhancements made in Milestone 3 were focused on improving this database. This required an understanding of how the database was set up, the data it stored, where and how that data was used, and what it was missing. The main issue that needed to be addressed was linking users to their events in order to display just their own events. This required updating the columns in the events table and the event schema to include a user id for each event. The queries accessing the data stored in the database also needed to be updated, as they originally returned and listed all events regardless of the user they were created for. Using prepared statements in these queries enhanced security by helping to prevent SQL injection and improving their performance.
Reflection
Most of the work done in this round of enhancements was focused on improving the database and accessing the data stored in it. It became very clear how important it is to separate concerns in a full-stack application, and I feel as though I have a better understanding of the flow and processes between the client and server sides of an application. The most challenging part of these enhancements was executing the planned changes. It was relatively easy to see what was missing and affecting the functionality, but the implementation of changes was often very complex and required a lot of trial and error, testing, and debugging.
Course Outcomes
- Develop a security mindset that anticipates adversarial exploits in software architecture and designs to expose potential vulnerabilities, mitigate design flaws, and ensure privacy and enhanced security of data and resources.
- Demonstrate an ability to use well-founded and innovative techniques, skills, and tools in computing practices for the purpose of implementing computer solutions that deliver value and accomplish industry-specific goals.
Milestone 4
The main focus of the enhancements made in Milestone 4 was to improve the usability and navigation of the application. Initially, changes users made to their event list such as adding an event or updating an existing one did not always persist. This required updating a lot of the logic associated with their changes and highlighted the need for an option to cancel an action without saving any changes. The display for the list of events was updated to better reflect how users read and understand information, which included adding easily accessible filter options and ordering events chronologically.
Reflection
I would consider these the hardest enhancements to make so far, but from working on them I have a lot more confidence using existing resources and libraries. The most challenging part of these enhancements was figuring out how to apply classes and methods from Java libraries to existing code, since a lot of what I was implementing was to improve already functioning code. It often caused the functionality I already had working to break because it didn’t easily adapt to incorporate the functionality provided by the libraries. It was hard to determine what was worth completely rewriting and if it would be beneficial.
Course Outcomes
- Design and evaluate computing solutions that solve a given problem using algorithmic principles and computer science practices and standards appropriate to its solution while managing the trade-offs involved in design choices.
- Demonstrate an ability to use well-founded and innovative techniques, skills, and tools in computing practices for the purpose of implementing computer solutions that deliver value and accomplish industry-specific goals.
Enhancement Summary by Category
Software Engineering and Design
- Redesigned the user interface.
- Added additional features: user profile, seven-day overview bar.
- Added functionality allowing users to logout.
- Updated forms to include a cancel button for when user doesn’t want to save changes or complete the action
Algorithms and Data Structures
- Added filtering options for the events list
- Organized events list to display events by date
Databases
- Updated database tables and event schema to link users to their events
- Updated database queries so each user sees only their own events (previously the queries retrieved all events in the database and displayed them)