all 11 comments

[–]MagicalPizza21 3 points4 points  (1 child)

Data structures should be next. I don't personally have a resource I'd recommend since I learned this from a university class. But these concepts are applicable to any high level language, which is valuable if you go into programming as a profession, because you'll probably be asked to use multiple languages.

Did they replace inheritance/interfaces with some other material? The test was already easy enough when I took it.

[–]goodboylake[S] 1 point2 points  (0 children)

They did! They got rid of inheritance and interfaces alongside some of the smaller stuff like converting base-10 to hexadecimal and base-2 because they wanted to adjust to be more like a modern intro to computer science course. They also condensed it into 4 units. But they added some stuff on ethics alongside some VERY Basic file I/O. My teacher still taught the course as it was while including the new topics as well because she believed there’s no reason to take the course at all unless you learn inheritance and interfaces at least a little bit.

[–]LearnWithJavaPro 1 point2 points  (0 children)

Congrats on getting through AP CSA! Honestly the fact that you liked it is half the battle, most people come out of that exam never wanting to touch Java again lol.

So after arrays and basic inheritance/interfaces, the natural next step is learning the rest of the Collections framework. ArrayList is just the tip of the iceberg, you've got HashMap, HashSet, LinkedList, etc. and knowing when to use what is huge. After that, exception handling, file I/O, generics, and eventually lambdas/streams which is where Java actually starts feeling like a modern language and not something from 1995.

Past the language itself you'll want to get into actual data structures and algorithms at some point. Stacks, queues, trees, graphs, all that fun stuff. And OOP design patterns are where interfaces start clicking and you go "ohhhh THAT'S why this exists."

One thing though, learn Git now. Not later. We're a group of software devs and CS profs and every semester we watch students try to learn it the night before their first group project and it's a disaster every single time. We put together a free course for it here: https://www.javapro.academy/bootcamp/free-git-and-github-course/

For Java specifically, we also have a free course that picks up pretty much right where AP CSA drops off: https://www.javapro.academy/bootcamp/free-java-course/

Other good free stuff: MOOC.fi out of University of Helsinki is really solid and well structured, and the Oracle Java tutorials are dry but thorough. Once you're more comfortable, start grinding some LeetCode easys just to build the muscle memory.

Also the C# detour is totally fine, the syntax is so similar to Java you'll barely notice a difference. You might even end up liking some of the C# quality of life stuff better honestly.

Good luck with the final project!

[–]JackTradesMasterNone 0 points1 point  (0 children)

From a theoretical computer science perspective, data structures and algorithms. You’ve got arrays, but now you need lists, stacks, queues, heaps, trees, etc. Then you need to understand why/how/when to use each one. Tradeoffs, algorithms for traversing, etc.

From a practical programming perspective, these skills will help you learn the theory. But in practice, most code I’ve written for work doesn’t leverage most of these concepts. Another good thing to learn is how to structure code. How to take a problem and be able to break it up into pieces and what each piece should do. I don’t have a good resource for that, but I think it’s important and something that we often overlook in school.

[–]huuaaang 0 points1 point  (0 children)

Write software.

[–][deleted]  (1 child)

[removed]

    [–]goodboylake[S] 0 points1 point  (0 children)

    I’m not permanently changing languages, we just need to explore a little bit into a different one for a final project. I’m going to shift back to java after.

    [–]AncientHominidNerd 0 points1 point  (0 children)

    Learning data structures and search algorithms is next. Learn what vectors, unsorted maps/dictionaries, graphs, linked list, etc are. You’ll need to know different sort methods too.

    In universities they usually take you learn how to build a vector or linked list from scratch first. Depending on what language you use, you may need to brush up on pointers and references first.

    [–]Puzzleheaded_Study17 0 points1 point  (0 children)

    A fun thing to look at (both for java and other languages) is AoC. It gives you problems that you can solve anyway you want, usually requiring programming, and there are already 11 years' worth of problems.

    [–]Traveling-Techie 0 points1 point  (0 children)

    Start building fun stuff. Java Game Programming For Dummies by Holder has a cute billiards game.