Getting Better at Programming (Java)

  • (5 Pages)
  • +
  • 1
  • 2
  • 3
  • Last »

64 Replies - 91200 Views - Last Post: 21 January 2014 - 05:10 PM

#1 macosxnerd101  Icon User is offline

  • Self-Trained Economist
  • member icon




Reputation: 10180
  • View blog
  • Posts: 37,586
  • Joined: 27-December 08

Getting Better at Programming (Java)

Post icon  Posted 17 May 2010 - 08:19 PM

*
POPULAR

While on DIC, I've seen a bunch of threads all asking basically the same thing- how can I get better at programming? The simple truth is that programming takes practice writing and debugging code. It is not something that comes overnight. So for those of you relatively new to (Java) programming, I've outlined a list of topics in a sequence from total novice to advanced programming, with focuses on various aspects of programming from data structures to Graphics to Networking.

I have also included a list of tutorials for most of the topics below. If you have a resource on Dream.in.Code that you feel would add to a given category, shoot me a PM!

Stage 1: You might fall into this category if you've never written a line of code before. Some things I would cover include:

Stage 2: If you have completed all the Stage 1 topics with a decent proficiency or are in the AP Computer Science or comparable class, then you should work on these topics. Note that all of these topics are critical to sucessful programming in Java, so you should have a strong handle on them before going onto stage 3:

Stage 3: If you have completed AP CS or Comparable Course and are proficient with all the above tools, then you may want to start on Stage 3 topics:

Stage 4: This is the advanced stuff, for which you should have a strong understanding of the previous 3 stages:

I'd be happy to update this list with additional topics as good suggestions are posted. :)

Is This A Good Question/Topic? 67
  • +

Replies To: Getting Better at Programming (Java)

#2 Dogstopper  Icon User is offline

  • The Ninjaducky
  • member icon



Reputation: 2857
  • View blog
  • Posts: 10,960
  • Joined: 15-July 08

Re: Getting Better at Programming (Java)

Posted 17 May 2010 - 08:43 PM

Nice categories Mac! I fall into 3 as I'm still learning many of those things.

Quote

Needs Work.... -Data Structures and Collections (Linked Lists, Stacks, Queues, TreeMaps, HashMaps, TreeSets, HashSets, Graphs)

Eh... -Advanced Generics (use of the wildcard operator and further parameterization; making your classes generic)

Check! -Graphical User Interfaces (Swing and AWT), as well as Graphics and Graphics2D classes for animations

Check! -Event-Driven Programming (possibly game programming)

Check! -File I/O

Not much... -Database


Thanks for the impetus for me to back out of games a little bit and learn a few more things before moving on...I've already covered most of Java2D.
Was This Post Helpful? 0
  • +
  • -

#3 Ember  Icon User is offline

  • D.I.C Head

Reputation: 70
  • View blog
  • Posts: 160
  • Joined: 24-April 10

Re: Getting Better at Programming (Java)

Posted 17 May 2010 - 09:27 PM

I want to say I'm stage 4 but I don't know anything about Database programming. Give me like 6 months since next semester I have 1 networking CS class and 1 Database in Java class. (and 1 assembly language and 1 C programming class and 1 matLab programming class. I bundled up on programming next semester :) )

It's great nostalgia thinking back to a year ago and being in Stage 1.
Was This Post Helpful? 0
  • +
  • -

#4 virgul  Icon User is offline

  • D.I.C Regular

Reputation: 44
  • View blog
  • Posts: 269
  • Joined: 18-March 09

Re: Getting Better at Programming (Java)

Posted 17 May 2010 - 09:30 PM

According to your charts im between a 3 and a 4!

I need to do more work in the following to get to a 4 (in my opinion)
Data Structures and Collections
Advanced Generics (I have used them and wrote a search based off them, but always more practice needed with these)
Database (a non .txt file...)

Great list
Was This Post Helpful? 0
  • +
  • -

#5 macosxnerd101  Icon User is offline

  • Self-Trained Economist
  • member icon




Reputation: 10180
  • View blog
  • Posts: 37,586
  • Joined: 27-December 08

Re: Getting Better at Programming (Java)

Posted 17 May 2010 - 09:33 PM

I'd definitely like to work more on the JDBC and Database functionality, though it shouldn't be too hard; I've just never really used it. In some down time, possibly towards the end of the school year after my web project is due, I'd like to hit on the Client/Server and Networking aspect along with more Threading, as I'm betting I'll need this for my internship this summer, which will focus on mobile development.
Was This Post Helpful? 0
  • +
  • -

#6 cfoley  Icon User is offline

  • Cabbage
  • member icon

Reputation: 1906
  • View blog
  • Posts: 3,953
  • Joined: 11-December 07

Re: Getting Better at Programming (Java)

Posted 18 May 2010 - 01:39 AM

A few more topics to add to your list. I'll be interested to see where you think they fit in. :)

OO design, including use of design patterns.
Proficiency at maintaining code, including refactoring.
Becoming comfortable with a domain-specific third party API. (i.e. something niche, not standard, and possibly poorly designed and a nightmare to work with)
Working comfortably on a large project where most of the code is not yours.
Skill in designing alternative, more efficient algorithms algorithms.
Finding performance bottlenecks and designing solutions.
Unit testing (and other types of testing)
Was This Post Helpful? 1
  • +
  • -

#7 Ember  Icon User is offline

  • D.I.C Head

Reputation: 70
  • View blog
  • Posts: 160
  • Joined: 24-April 10

Re: Getting Better at Programming (Java)

Posted 18 May 2010 - 07:25 AM

Quote

Becoming comfortable with a domain-specific third party API. (i.e. something niche, not standard, and possibly poorly designed and a nightmare to work with)

Yea, I have had my fair share of bad experiences working with extremely flawed API designs. Mostly Cytoscape API. Half their documentation isn't actually documented and whatever is, is most likely deprecated lol.

This post has been edited by Ember: 18 May 2010 - 07:25 AM

Was This Post Helpful? 0
  • +
  • -

#8 xclite  Icon User is offline

  • LIKE A BOSS
  • member icon


Reputation: 877
  • View blog
  • Posts: 3,122
  • Joined: 12-May 09

Re: Getting Better at Programming (Java)

Posted 18 May 2010 - 07:34 AM

View Postmacosxnerd101, on 18 May 2010 - 12:33 AM, said:

I'd definitely like to work more on the JDBC and Database functionality, though it shouldn't be too hard; I've just never really used it. In some down time, possibly towards the end of the school year after my web project is due, I'd like to hit on the Client/Server and Networking aspect along with more Threading, as I'm betting I'll need this for my internship this summer, which will focus on mobile development.


JDBC is pretty straightforward - a couple of gotchas but not awful to work with. Threading is pretty interesting stuff.
Was This Post Helpful? 0
  • +
  • -

#9 macosxnerd101  Icon User is offline

  • Self-Trained Economist
  • member icon




Reputation: 10180
  • View blog
  • Posts: 37,586
  • Joined: 27-December 08

Re: Getting Better at Programming (Java)

Posted 18 May 2010 - 07:36 AM

That's what I've seen from looking at the API. Threading does look interesting, I've just never done anything of any real complexity with it.

@cfoley: I'll add those to the list. Good suggestions.
Was This Post Helpful? 0
  • +
  • -

#10 Dogstopper  Icon User is offline

  • The Ninjaducky
  • member icon



Reputation: 2857
  • View blog
  • Posts: 10,960
  • Joined: 15-July 08

Re: Getting Better at Programming (Java)

Posted 18 May 2010 - 02:00 PM

View PostEmber, on 18 May 2010 - 09:25 AM, said:

Quote

Becoming comfortable with a domain-specific third party API. (i.e. something niche, not standard, and possibly poorly designed and a nightmare to work with)

Yea, I have had my fair share of bad experiences working with extremely flawed API designs. Mostly Cytoscape API. Half their documentation isn't actually documented and whatever is, is most likely deprecated lol.


...cough....Gridworld....
Was This Post Helpful? 0
  • +
  • -

#11 Java Student  Icon User is offline

  • D.I.C Regular
  • member icon

Reputation: 21
  • View blog
  • Posts: 480
  • Joined: 05-February 10

Re: Getting Better at Programming (Java)

Posted 18 May 2010 - 02:36 PM

wow Macos, i wanted to see somthing like this so good job
very nice, really smart. I could comfortable place myself
between stage 2 and 3.

I might consider moving 'Threading' from stage 4 to stage 3 though =)

This post has been edited by Java Student: 18 May 2010 - 02:38 PM

Was This Post Helpful? 0
  • +
  • -

#12 Dogstopper  Icon User is offline

  • The Ninjaducky
  • member icon



Reputation: 2857
  • View blog
  • Posts: 10,960
  • Joined: 15-July 08

Re: Getting Better at Programming (Java)

Posted 18 May 2010 - 08:18 PM

View PostJava Student, on 18 May 2010 - 04:36 PM, said:

I might consider moving 'Threading' from stage 4 to stage 3 though =)


Normally, I would agree with you, but with the complexities of Java having SOME objects being thread safe (like Vector) and some that are not (like ArrayList), and the fact that to make Swing thread-safe is complicated, I have to agree with macosxnerd101
Was This Post Helpful? 3
  • +
  • -

#13 macosxnerd101  Icon User is offline

  • Self-Trained Economist
  • member icon




Reputation: 10180
  • View blog
  • Posts: 37,586
  • Joined: 27-December 08

Re: Getting Better at Programming (Java)

Posted 18 May 2010 - 08:24 PM

@Java Student: Dogstopper is right. Simple threading, like parallelizing Quicksort or Mergesort, basic synchronization and scheduling, and similar actions are fairly straight-forward for anyone with a decent understanding of the language. However, Swing and Threading gets incredibly complex, especially when we get into advanced game programming. So I do think it warrants its position in category 4.
Was This Post Helpful? 0
  • +
  • -

#14 Dogstopper  Icon User is offline

  • The Ninjaducky
  • member icon



Reputation: 2857
  • View blog
  • Posts: 10,960
  • Joined: 15-July 08

Re: Getting Better at Programming (Java)

Posted 18 May 2010 - 08:36 PM

Even me, as a game programmer (at the moment, till I have time to look into structures), have severe issues with concurrency in Swing, and end up simply using javax.swing.Timer. However, to truly make a game in something like C++ (which I have done), you generally have several threads going at a time: main loop thread, trajectory calculations threads, game world rendering thread,... and all must work safely simultaneously.
Was This Post Helpful? 0
  • +
  • -

#15 Java Student  Icon User is offline

  • D.I.C Regular
  • member icon

Reputation: 21
  • View blog
  • Posts: 480
  • Joined: 05-February 10

Re: Getting Better at Programming (Java)

Posted 19 May 2010 - 11:08 AM

View PostDogstopper, on 18 May 2010 - 07:36 PM, said:

Even me, as a game programmer (at the moment, till I have time to look into structures), have severe issues with concurrency in Swing, and end up simply using javax.swing.Timer. However, to truly make a game in something like C++ (which I have done), you generally have several threads going at a time: main loop thread, trajectory calculations threads, game world rendering thread,... and all must work safely simultaneously.


Java has its place in the programming community but im started to
think its definitly not in game programming. Swing with Threads
has given me issue's with game's also. Are threads easier to handle
in a language like C++?
Was This Post Helpful? 0
  • +
  • -

  • (5 Pages)
  • +
  • 1
  • 2
  • 3
  • Last »