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

I passed =)

 
Lara McCarver
Ranch Hand
Posts: 118
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The maximum possible score is 400; the minimum to pass is 320.

General Considerations (maximum = 100): 90
Documentation (maximum = 70): 69
O-O Design (maximum = 30): 30
GUI (maximum = 40): 31
Locking (maximum = 80): 80
Data store (maximum = 40): 40
Network server (maximum = 40): 40

Total (maximum = 400): 380


I wanted to thank everyone here. Especially... hmmm... the person who suggested to me that you should worry about dirty records (because the record on the server can change between when the client reads it and when the client makes an update to a record) -- that never occurred to me. And Andrew Monkhouse for keeping the forums alive and answering all kinds of questions with thought provoking answers.

One thing that really took a long time at the end was scrutinizing and fixing up all that java doc. My user documentation was really short, only 3 pages And my issues document turned into a design-explanation that was 8 pages long I think. I used standard mechanisms for locking, the kind everyone talks about. (None of the fancy classes from 1.5, though I used 1.5 because of some of the great new features, in particular you don't have to fuss with stubs.) But I did try to think through all the little corner cases, and I did create a bunch of junit tests to check for thread safety.

I ordered Andrew's book but in the end I submitted my assignment days before it arrived and I haven't even taken it out of the packaging I used the general adaptor approach recommended in the SCJD 1.4 book to handle the client/server/standalone requirements. The explanation was confusing, but I looked at the source code and how all the classes related to each other and figured it out. Also, in the SCJD 1.4 book they explain how to get the RMI server to register itself, I am not sure I could have figured it out otherwise, even though I read at least half of Java RMI.

I took the exam on Dec 15. I was worried because one or two things I didn't describe accurately... kind of embarrassing... I can't say what they were though because of the Vow of Secrecy I took But it was all OK. I got the certificate in the mail about a week ago. I was never mailed my score, but I sent Sun an e-mail and they said to log into
http://www.certmanager.net/sun_assignment/ to get my score, so that's what I did.

Thank you, thank you, thank you!

Lara
 
Andrew Monkhouse
author and jackaroo
Marshal Commander
Pie
Posts: 12014
220
C++ Firefox Browser IntelliJ IDE Java Mac Oracle
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Congratulations Lara , glad to see you passed with such a great score.

Best regards, Andrew
 
Alan Morgan
Ranch Hand
Posts: 113
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Congrats


I am days away from submitting (hopefully)
and I was just wondering what the exam is like ?

I'm just wondering what kind of questions are asked so I can prepare properly ?
(Without giving too much away obviously)
I guess I'm just concerned as my project has been spaced out over the space of nearly a year and I will need to prepare as I may not remember fully why I made certain decisions early on. So I just want to make sure I'm ready for it.

Thanks,
Alan.
 
Daniel Dalton
Ranch Hand
Posts: 146
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Congratulations Lara - excellent score!
 
B Chen
Ranch Hand
Posts: 89
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Great job Lara
 
Aruneesh Salhotra
Ranch Hand
Posts: 167
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Congrats.
Since u passed, let me ask one question. It is bugging me.

what is the type of the flag (valid/deleted flag) in the db file.
It says that after the header, all the records are 8-bit values. It says that valid is 00, and deleted is 0x8000. How did u store this.
 
Lara McCarver
Ranch Hand
Posts: 118
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
First, thanks for all the kind responses

Well let's see, the exam asks you questions about your program. The questions ask you what you did in your program, either in terms of the internal code or the UI, and then it will often ask why you made that choice and/or what alternatives you considered. It doesn't always have to be a deep reason, in my opinion. Like for one I said it would be easier that way (I did explain why) and for another I said that I couldn't figure out any alternatives. But if there is a serious alternative, you have to indicate it. So... before your exam, review your code and also use your app a couple of times if it has been a while since you wrote it. I have to say that I didn't answer all the questions 100% accurate... there was one place where I said I thought my program did X, but I did say I wasn't 100% sure, and then when I went back home and tested it, it turned out it didn't do that, and so I was really worried about that, but I did pass so... I guess you don't have to be perfect.

In terms of the deleted flag, I examined it using Hex mode in Textpad and it was 00 or FF I think, so I tested for that, and then I stored in my lock manager a state flag for every record in the database. The state flag not only had values like VALID and INVALID but also it had a value for CREATING I think. This was part of what I mentioned in my original post, I thought through a lot of possible scenarios including making sure that creating records could not collide with each other. For example, what if 2 users try to create a record at the same time. You have to be careful because if you let them both try to create record 51, there will be obvious problems. Creation can fail, in which case the state of the record gets flipped to INVALID.

I tried to avoid any deadlocks, but I used simple mechanisms, e.g. saying that only one client at a time can create a record. Also, saying that each client can only be modifying one record at a time. These are both pretty limiting, for deadlock in particular I know it's OK for a client to grab more than 1 record, as long as they do it in the right order. My goal was to avoid server problems caused by poorly written clients. I chose simple solutions because, in my opinion, writing your own database is a stupid business decision (unless that is the goal of the company, to be a database vendor). I think I might even have said this in my exam or in my issues document, as the justification for why I used simple and over-restrictive solutions at times. I said that I was planning on convincing the company to start using a real DB
 
Eiji Seki
Ranch Hand
Posts: 88
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
First of all, congratulations, Lara.

Hi everyone, this is my first message. I downloaded my project specification in december, but just now I'm beggining to really get it going. I believe this quote here just changed my concepts about the hole thing:

(...) I used simple mechanisms, e.g. saying that only one client at a time can create a record. (...) These are both pretty limiting (...) My goal was to avoid server problems caused by poorly written clients. I chose simple solutions


Since Lara got a perfect mark at Data Store, this seems a very sufficient solution. My first idea was much more complex (data cache, locking by record, compulsory sequenced locking, etc), but I just realized I'm overdoing it. "Simplicity is emphasized in the specification and I should stick to it." I will just repeat it to myself for the months to come.


Of course, I must make sure my simple solutions are adequately justified.
[ February 15, 2006: Message edited by: Eiji Seki ]
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic