In Talons, there is a project called in-depth. It’s an opportunity for students to learn about a topic that otherwise would not be taught in school. Students choose a topic of little experience they are interested in and learn about it in-depth, hence the name of the project. They also will find an experienced mentor to help them with their project.
This year, I have decided to take on coding for my in-depth project. Specifically, I will be coding games using Java.
I have some prior experience from other coding languages (mainly scripting languages) that I have worked with before. I have also took the opportunity to learn a bit about Java during Winter vacation, and right now, I know about:
- Variables
- Some basic control structures:
- basic functions such as console commands
- conditional structures (if-else and switch statements, but not ternary operators)
- loops
- branching statements to be used within other control structures (break, continue, return)
- methods
- The only data structure that I have learned so far is the array.
Some goals for my learning:
- I will eventually be able to write “clean” code to accomplish simple and advanced tasks, and I also want to be able to understand many common techniques that are used at a basic level. I also want to be able to use object-oriented programming effectively.
- I will learn how to use different control structures, data structures, algorithms, and user interfaces together. I will learn common techniques for using these and I will understand how these techniques work. I will also learn common techniques for patching/resolving bugs and glitches when they arise.
I chose to learn how to code because it seems quite interesting. Many games, applications, and websites all involve code, and I want to have a better understanding of how these work. Learning a bit about game design also seems really fun because of the idea of being able to pick out glitches in games and exploit them.
Also, coding seems like a useful skill to have because it may be able to help my future career. My experience with programming will not only help if I want to become some sort of an engineer, but it will help with general problem-solving skills as well.
Java immediately appealed to me because of how flexible, user-friendly, and widely used it is. I figured that it’s probably more beneficial if I start with a commonly used language because it has a bigger community and more well-developed libraries, making it easier to find resources.
To help me with my learning, I have sought the help of a mentor. They have thorough experience with game development and coding, so they will be able to effectively guide me and answer some of my questions throughout my coding journey.
I have come up with a rough outline of what I plan to do with Java:
- As a starter project, I will code a calculator application by the end of February. It will work with decimals and have all the basic operations (addition, subtraction, multiplication, division, exponents, and maybe roots).
- I am still unsure of my second game, but it will probably be one of the following:
- Re-create Conway’s Game of Life using plain ASCII characters, preferably by the end of march.
- Create a working chess game. The player should be able to move the pieces around by clicking and dragging.
- As a final project, I will make a very simple game of my own. I haven’t thought much about this yet (more information in a later blog post probably).
Here’s a timeline of my project:
Activity | Timetable |
Do some basic research about Java. | Week 1 |
Find a suitable mentor and get all of the paperwork done. | Week 2-3 |
Learn basic concepts and functions in Java. | Week 4-6 |
Create a calculator | Week 7-8 |
Learn basic UI styling | Week 9-10 |
Create Conway’s Game of Life | Week 10-12 (might take a week longer) |
Create a chess game | Week 13-15 (or 14-16 depending on how long the previous project takes) |
Learn more advanced UI styling | Week 17(18)-19 |
Create a final game | Week 19-22 |
To prove my learning along the way, I will be blogging every two weeks. I will make little example snippets of code to demonstrate anything new that I have learned. Whenever I finish a bigger part of my project (like a game), I will also post that on my blog. I encourage everybody to try out my games. Also, if anyone finds and bugs or glitches, please leave a comment on my blog so I can fix them quickly.
Currently, I still need to figure out a more concrete plan, especially about which games I will make. Then, I want to learn about are ternary operators. After that, I want to learn more about data structures and algorithms. I also want to hopefully learn more about object-oriented programming in the future, but that may take a while.
Thank you for reading! Keep an eye out for new blogs posts later, as normally I will be posting every two weeks.
Detailed post. Great to see you use the Christmas break to get started. I look forward to you teaching me how coding in Java works.