Win a copy of The Little Book of Impediments (e-book only) this week in the Agile and Other Processes forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

What is involved?

 
Adam Nace
Ranch Hand
Posts: 117
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I am soon considering attempting the SCJD certification, and I have a few questions I was hoping could be answered by some people who have already aquired the certification.

The first, and most obvious question is: Am I Ready? First, I suppose I will have to give you some insight on myself:

  • I am a third year undergrad in Computer Engineering, although I believe this really doesn't say ANYTHING about my skills in software, particularly in java.
  • I have passed the SCJP exam (I would assume this means that I know the LANGUAGE well enough, where it may say less about my knowledge of the libraries and developing).
  • Through co-op placements in my program at school, I have spent a full year developing java code in both research & development, and commercial design.
  • I have written a basic synchronous client / single-threaded (single client) server for robot control in java, for work. I implemented it using java.io.*, and then reimplemented it using NIO. I have also written basic multi-threaded components to both the client and the server for making their other responsibilities interact with the communication parts of the applications.
  • I have a basic knowledge of design patterns, which I have been working on studying for over a year.



  • I figure this should be enough to be capable of writing the assignment and the essay, but I would just like to be sure before I purchase them.


    Another question: While I am familiar with sockets, but have rarely used serialization, as I have often found there are better formats for sending data. I know absolutely NOTHING about RMI. Which would be the prefered / most suitable solution in the assignment: Sockets or RMI? Is it worth my time to learn RMI and use it for the assignment, or is the assignment well suited to sockets as well?


    Another question: Just how MUCH multi-threading is involved? Is it just basic prevention of concurrent access to objects, or is it more complicated? While I have often used synchronized code blocks to protect critical sections of code, I have rarely made use of wait and notify, and basically never used the concurrency and locks facilities provided in the java.util.concurrent libraries. Will I need the use of these?


    A Question About Grading: I notice that an applicant requires a score of 80% to pass. How nit-picky is the grading? Is 80% a realistic score for an application that a) works correctly, and b) has a decent design? Or are they going to dock points at any minor concern they have?

    A Question About Grading the Documentation: I typically write my code in a manner that I feel is self-documenting (i.e. appropriate methods and variable names, breaking procedures into logical, well named methods, etc). Would they consider this well documented, or do they prefer redundant comments in the code? What ratio do they expect between code and comments?

    A Question About Workload: The sun website indicated that the coding would probably take approximately 40 hours, with about 3500 lines of code. Would anybody here dissagree with that assessment? How much of those 3500 lines of code are white-space or comments? How much are javadoc? The reason I ask is because I am actually very busy right now, but don't forsee that changing in the near future, so there is no point in waiting, unless it is unrealistic to be able to complete the assignment in 40-ish hours.

    A Question About the Essay: The impression I got from the description on the sun website is that the essay questions are related to the application written in the assignment, and the specific decisions made in implementing them. Is this correct, or does the essay pose a whole new assignment description, and ask questions about that? If the questions are about the design I will do in the assignment stage, would it be worth-while then to keep notes? If I do keep notes, would they be considered acceptable aids to bring to the exam? Or would the best I could do be read them over before I take the exam?

    Just One More Question: How valuable are the sample exams? Are they worth the cost? It certainly seems to me like a sample assignment question would be worth litte since the actual assignment has no dead-line, and I think a sample essay question would worth only as much as the questions on it were similar to the actual essay questions asked in the real exam. Has anybody who has purchased the sample exams found that they were actually of great value?

    Answers to any of these questions would be most appreciated! Thanks!

    - Adam
    [ July 28, 2006: Message edited by: Adam Nace ]
     
    Cindy Rogers
    Ranch Hand
    Posts: 31
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Adam, I recently passed the SCJD certification, so I'll give you my opinions.

    Yes, I think you're ready!


    >> Another question: While I am familiar with sockets, but have rarely used >> serialization, as I have often found there are better formats for
    >> sending data. I know absolutely NOTHING about RMI. Which would be the
    >> prefered / most suitable solution in the assignment: Sockets or RMI? Is
    >> it worth my time to learn RMI and use it for the assignment, or is the
    >> assignment well suited to sockets as well?

    Either sockets or RMI is acceptable. Personally, I knew sockets but decided to use RMI for this assignment -- and it was easy to learn enough for the application.


    >> Another question: Just how MUCH multi-threading is involved? Is it just >> basic prevention of concurrent access to objects, or is it more
    >> complicated? While I have often used synchronized code blocks to protect
    >> critical sections of code, I have rarely made use of wait and notify,
    >> and basically never used the concurrency and locks facilities provided
    >> in the java.util.concurrent libraries. Will I need the use of these?

    It does involve synchronization and wait/notify. I didn't use any of the java.util.concurrent libraries; however, I did implement my own lock manager. The locking design/implementation is a key part of the exam (worth 20% of the score), and people often lose a lot of points on it. My implementation was simple, but I spent a lot of time verifying completeness and accuracy both of the locking code and that of the invoking code.


    >> A Question About Grading: I notice that an applicant requires a score
    >> of 80% to pass. How nit-picky is the grading? Is 80% a realistic score
    >> for an application that a) works correctly, and b) has a decent design?
    >> Or are they going to dock points at any minor concern they have?

    I received 395/400 points -- but I lost a few points on the GUI (where I spent a lot of time/effort) and got 100% on other parts that were pretty minimal. My guess is the scorers have a checklist of specific items to verify, so it doesn't pay to add extra features. As I mentioned above, the locking section seems to be the most problematic for scores.


    >> A Question About Grading the Documentation: I typically write my code in
    >> a manner that I feel is self-documenting (i.e. appropriate methods and
    >> variable names, breaking procedures into logical, well named methods,
    >> etc). Would they consider this well documented, or do they prefer
    >> redundant comments in the code? What ratio do they expect between code
    >> and comments?

    Not sure. Javadoc is required, as well as a user guide and a design document. Most of my documentation in the code was targetted for a maintenance programmer, explaining WHY rather than WHAT.

    >> A Question About Workload: The sun website indicated that the coding
    >> would probably take approximately 40 hours, with about 3500 lines of
    >> code. Would anybody here dissagree with that assessment? How much of
    >> those 3500 lines of code are white-space or comments? How much are
    >> javadoc? The reason I ask is because I am actually very busy right now,
    >> but don't forsee that changing in the near future, so there is no point
    >> in waiting, unless it is unrealistic to be able to complete the
    >> assignment in 40-ish hours.

    I spent a lot more than 40 hours on it... The assignment has some intentionally confusing/vague requirements, which (to me, at least) took some time to figure out.

    >> A Question About the Essay: The impression I got from the description on
    >> the sun website is that the essay questions are related to the
    >> application written in the assignment, and the specific decisions made
    >> in implementing them. Is this correct, or does the essay pose a whole
    >> new assignment description, and ask questions about that? If the
    >> questions are about the design I will do in the assignment stage, would
    >> it be worth-while then to keep notes? If I do keep notes, would they be
    >> considered acceptable aids to bring to the exam? Or would the best I
    >> could do be read them over before I take the exam?

    Yes, you are correct. The essay questions are intended to verify that YOU wrote the code, so you must describe why and how you designed and/or implemented certain features.

    You must submit a design document as part of the project (describing the major design choices you made), and I would recommend writing this document as you design/code the application. In my case, I had described 3 of the 4 essay questions in my design choices document.

    You cannot bring anything to the essay exam. However, writing the design document should prepare you sufficiently for the exam.

    >> Just One More Question: How valuable are the sample exams? Are they
    >> worth the cost? It certainly seems to me like a sample assignment
    >> question would be worth litte since the actual assignment has no dead-
    >> line, and I think a sample essay question would worth only as much as
    >> the questions on it were similar to the actual essay questions asked in
    >> the real exam. Has anybody who has purchased the sample exams found that
    >> they were actually of great value?

    I didn't purchase any sample exam, and I don't recommend it. The essay exam questions were not tricky; some were very obvious; and you should be able to answer them sufficiently just by writing the design document.
     
    Andrew Monkhouse
    author and jackaroo
    Marshal Commander
    Pie
    Posts: 12012
    218
    C++ Firefox Browser IntelliJ IDE Java Mac Oracle
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Originally posted by Adam Nace:
    The first, and most obvious question is: Am I Ready?
    I think you are ready.
    Originally posted by Adam Nace:
    Which would be the prefered / most suitable solution in the assignment: Sockets or RMI? Is it worth my time to learn RMI and use it for the assignment, or is the assignment well suited to sockets as well?
    There is no prefered solution to the assignment - each solution has it's own unique problems to solve, and each solution provides conveniences not present in the other solution.

    What is important is that you should be able to justify why you choose one solution over the other. This is a design decision you will have to make yourself, and there is a requirement in the assignment to document your design decisions. There is an argument that "I don't know RMI/Sockets" can be a valid reason for choosing whichever protocol you do decide to use however I personally disagree with this, given that you have all the time you want to learn the two technologies and then make an informed decision about which to use.


    Originally posted by Adam Nace:
    Another question: Just how MUCH multi-threading is involved?
    In some ways the answer to that is dependant on your choice of RMI or Sockets - RMI provides threads for you, while Sockets requires you to do a bit more work. But again there is a tradeoff - with Sockets you are (usually) more aware of the fact that you are explicitly creating threads, and code written by a sockets programmer is often more thread safe. I have seen many simple RMI programs where it appears that the programmer forgot that more than one thread could be accessing a given method at any given time and/or they forgot that two calls from a single client can be executed in different threads.
    Originally posted by Adam Nace:
    Is it just basic prevention of concurrent access to objects, or is it more complicated?
    Actually it is almost the oposite - one of the design desirables is to allow as much concurrency as possible, so you have to write your code in such a way that multiple threads can work concurrently for as much time as possible.
    Originally posted by Adam Nace:
    While I have often used synchronized code blocks to protect critical sections of code, I have rarely made use of wait and notify, and basically never used the concurrency and locks facilities provided in the java.util.concurrent libraries. Will I need the use of these?
    I would say that you would need some of these at least.
    Originally posted by Adam Nace:
    A Question About Grading: I notice that an applicant requires a score of 80% to pass. How nit-picky is the grading? Is 80% a realistic score for an application that a) works correctly, and b) has a decent design? Or are they going to dock points at any minor concern they have?
    See Cindy's comments. Just to comment on that a little further - a very common score for locking is 44/80. This is a result of a very common fault in the locking code, but the reason I mentioned it is that it shows how much the assessors are working from a set list of things to look for - we rarely see any numbers in locking other than 44/80 (Cindy - you obviously got it right - congratulations).

    Originally posted by Adam Nace:
    A Question About Workload: The sun website indicated that the coding would probably take approximately 40 hours, with about 3500 lines of code. Would anybody here dissagree with that assessment?
    Take a look at the topic "is Sun kidding about this"

    I suspect that Sun are basing this number on the 5 days required to take the Java Programming Language Workshop (SL-285) which covers most of the topics needed for the assignment.

    Regards, Andrew
     
    • Post Reply
    • Bookmark Topic Watch Topic
    • New Topic