Open Side Menu Go to the Top
Register
Masters In Comp Sci With No Prior Experience Masters In Comp Sci With No Prior Experience

11-02-2012 , 11:16 AM
haha that username gets me every time. makes me feel like a child laughing at that.

Yes, I have learned to use a debugger.

Regarding Java, I improved exponentially once I started to understand/see the full picture of objects, and once I realized that the main method should primarily be used to call methods. Your methods do the work for you and the main method calls them as is necessary.

I still have a long way to go, but those two realizations (although I guess they seem simple) helped me improve a great deal.

Regarding the bomb lab, I am now on phase 6. I'll post an annotated copy of one of the phases once I diffuse it.
Masters In Comp Sci With No Prior Experience Quote
11-02-2012 , 05:13 PM
What're people's thoughts on the top portion of my resume? As I've alluded to, I'm going to try to get an internship, and I'm not sure which technical skills will be considered most valuable to an employer.

It would be helpful for me to hear any advice before I start applying. I set aside a list of internships that have caught my eye over the past few weeks that I have been waiting to go after.

Would it be a good idea to include a bullet on all of the self-learning I'm doing?

Quote:
EDUCATION

DEPAUL UNIVERSITY Chicago, IL
Master of Science in Computer Science March 2014
GPA: 3.85/4.00

UNIVERSITY OF MICHIGAN Bachelor of Arts in English and Philosophy April 2007
GPA: 3.53/4.00

TECHNICAL PROFICIENCIES
• Proficient in Java; learning and improving every day at C, machine level programming and SQL.
• Relevant Coursework: Discrete Mathematics, Intermediate Java, Machine Level Programming, Data Structures.
Masters In Comp Sci With No Prior Experience Quote
11-02-2012 , 07:36 PM
I'd include a self learning section
Masters In Comp Sci With No Prior Experience Quote
11-02-2012 , 08:52 PM
Maybe just me but something like

"working knowledge of C, machine level programming and SQL"
or
"intermediate knowledge of C,machine level programming and SQL"


sounds better than

"learning and improving every day at C, machine level programming and SQL."

IMHO, the latter makes you sound unsure of your talents. That may be true but you don't need to point that out.
Masters In Comp Sci With No Prior Experience Quote
11-02-2012 , 11:05 PM
Say you're an expert, bro.. that's what they wanna hear..
Masters In Comp Sci With No Prior Experience Quote
11-03-2012 , 06:11 PM
Hey, congratulations on your progress.

May I ask you how did you get into Trading?
It's uncommon for an english bachelor, right?

Most importantly, why did you choose to leave?
I assume it was a fairly good career, wasn't it?
Masters In Comp Sci With No Prior Experience Quote
11-04-2012 , 01:30 AM
Have you actually done machine level programming, or just the bomb lab where you read and disassemble it? I wouldn't say that you're doing/learning it unless you've actually written assembly (I'm in a bit of a similar position to you actually).
Masters In Comp Sci With No Prior Experience Quote
11-04-2012 , 07:38 AM
Quote:
Originally Posted by prome
Hey, congratulations on your progress.

May I ask you how did you get into Trading?
It's uncommon for an english bachelor, right?

Most importantly, why did you choose to leave?
I assume it was a fairly good career, wasn't it?
There is a drunk guy yelling "wooooo" over and over again outside of my building and I can't sleep, so I may as well respond to this now.

I got into trading through poker. Interestingly, at the time when I graduated (April 2007) there were a lot of trading companies that gave credence to the theory that both poker and trading involved a similar skill set.

Even though I made a lot of money playing poker for someone who was 19-22, my dad always vocally opposed it; however, apparently when talking to acquaintances/friends he bragged about it. This led to a guy who trains the traders for the company I ended up working for hearing about it, and he asked to set up an interview with me. That's how it all got started; I interviewed a couple of times and got a job offer.

Regarding the three years I traded:
It all started off with 6 months of training. At many companies you end up learning a strategy designed by your company; you end up seeing the market through their eyes. For newer traders, my company implemented their strategy via the 5 year because at the time, it was an extremely slow market (in other words, it would be very hard for a newer trader to do something reckless in that market). This was all well and good until 2008 when the markets went nuts. Suddenly the 5 year became an extremely fast market with a lot more unpredictability, and my company's strategy stopped working as effectively. It got to the point where their strategy stopped working altogether, and I saw more than 50 people get fired/quit.

I was able to survive for a long time because I adjusted their strategy to suit the much faster market conditions. However, there is a difference between surviving and making a living. I reached a point where I didn't see a sustainable future for myself and chose to leave.

There are a lot of positives to trading, but as an overall game it is extremely complex. Since I'm not sure how much you know about either trading or poker, I won't use any analogies between the two. My advice to you is to be very selective in the company you choose to work for. As I mentioned, you will learn to see the market through specific strategies, and this means that once you take your first trading job, other trading companies will not want to hire you in the future unless you can prove that you were highly profitable.

Anyway, I stand by my decision to leave my Trading job; but, I admit that I didn't realize how challenging the next couple of years would be from an employment perspective. A humbling experience to say the least.
Masters In Comp Sci With No Prior Experience Quote
11-04-2012 , 10:42 AM
Go_Blue, you rock.
Masters In Comp Sci With No Prior Experience Quote
11-16-2012 , 05:44 AM
I had two finals today. The final for my Machine programming class had a few tricky problems.

Two of the tricky ones were bitwise questions:

1. How would you represent 1-x?

Quote:
I ended up getting to the answer ~x+2. ~x+1 is the same thing as -x, and the extra one should be the same thing as 1-x. To test it I used a random number for x.
x=5=0101
~x=1010

1010+0010=1100

1-5=-4 and negative 4 is (~4+1) in binary which is

~(0010) which equals 1101.

1101 +1 =1100 and so we should be good to go here with ~x+2.
2. How would you represent (x>=0) ? x:-x ?

Quote:
This one is fairly complicated and I don't remember exactly how I did it.
Then there was a tricky problem involving ints vs floating point numbers where if output A and B are possible, you need to provide the input for X to make them possible.

3. if (int x +1<x ){
printf("A");
else
printf("B");

Quote:
So this should be possible. Tmax+1=Tmin. So if your input for x is 0x7FFFFFFF and you add 1, that gives you 0x80000000. And 0x80000000 is less than 0x7FFFFFFF.
4. if (float x =1.0<x)
{
printf("A");
else
printf("B");
}

Quote:
I don't think there's ever an input for X that would cause this to be true. Floating point numbers are represented as:

s|exponent (8 bits)| fraction/mantissa (23 bits)

The numbers will never wrap around. So if you add 1 you will keep getting a bigger number until you reach infinity which is 0|1111 1111|00000000000000000000000.
There were a few other problems that were pretty interesting but those were the ones I spent the most time thinking about.

Anyway, I couldn't fall asleep so I felt like writing out a few of the problems. I'll explain how to read assembler code with a bomb lab example this weekend. I'm sure you are all on the edge of your seat for that one...

Last edited by Go_Blue; 11-16-2012 at 05:53 AM.
Masters In Comp Sci With No Prior Experience Quote
11-18-2012 , 08:24 PM
Alright, so I apologize if this isn't helpful at all, but I tried to quickly free write through a phase of the bomb lab. It would have been better to have screenshots and such, but I didn't have much time to work on this today. I'm having a daughter soon and it's my job to paint everything/put stuff together (ohhhhhh the humanity).

This is the original code (my annotations are below):

Quote:
Dump of assembler code for function phase_4:
0x08048c8e <phase_4+0>: push %ebp
0x08048c8f <phase_4+1>: mov %esp,%ebp
0x08048c91 <phase_4+3>: sub $0x28,%esp
0x08048c94 <phase_4+6>: lea -0xc(%ebp),%eax
0x08048c97 <phase_4+9>: mov %eax,0x8(%esp)
0x08048c9b <phase_4+13>: movl $0x8049958,0x4(%esp)
0x08048ca3 <phase_4+21>: mov 0x8(%ebp),%eax
0x08048ca6 <phase_4+24>: mov %eax,(%esp)
0x08048ca9 <phase_4+27>: call 0x804886c <sscanf@plt>
0x08048cae <phase_4+32>: mov %eax,-0x4(%ebp)
0x08048cb1 <phase_4+35>: cmpl $0x1,-0x4(%ebp)
0x08048cb5 <phase_4+39>: jne 0x8048cbe <phase_4+48>
0x08048cb7 <phase_4+41>: mov -0xc(%ebp),%eax
0x08048cba <phase_4+44>: test %eax,%eax
0x08048cbc <phase_4+46>: jg 0x8048cc3 <phase_4+53>
0x08048cbe <phase_4+48>: call 0x8049635 <explode_bomb>
0x08048cc3 <phase_4+53>: mov -0xc(%ebp),%eax
0x08048cc6 <phase_4+56>: mov %eax,(%esp)
0x08048cc9 <phase_4+59>: call 0x8048c58 <func4>
0x08048cce <phase_4+64>: mov %eax,-0x8(%ebp)
0x08048cd1 <phase_4+67>: cmpl $0xc90f7,-0x8(%ebp)
0x08048cd8 <phase_4+74>: je 0x8048cdf <phase_4+81>
0x08048cda <phase_4+76>: call 0x8049635 <explode_bomb>
0x08048cdf <phase_4+81>: leave
0x08048ce0 <phase_4+82>: ret
End of assembler dump.
Quote:
Dump of assembler code for function phase_4:
0x08048c8e <phase_4+0>: push %ebp
0x08048c8f <phase_4+1>: mov %esp,%ebp
0x08048c91 <phase_4+3>: sub $0x28,%esp
The first three lines of the code set up the stack.

-EBP saves a position inside a stack. It's almost like a homepage. It says, this is where I am.
-Everything works around the stack base pointer (EBP is base pointer).
-To access things above the Base Pointer we need to add. To access below, we need to subtract.
-Things above the base pointer are the return addresses and the parameters passed to a function.
--This means that to access the first parameter we need to do EBP+8 because the return address takes up the first 4 bytes.
---To access local variables, we need to subtract. In the above code you can see that 0x28 is subtracted which when converted from hex to decimal is equal to 40 (16*2+8). This makes room on the stack for them.

-Commonly used stacked plates analogy: In order to get to plates on the bottom, we need to move the ones off the top to get to the one we want.
--The top of the stack is always the object that we need to take remove first. It is a last in first out system.

Quote:
0x08048c94 <phase_4+6>: lea -0xc(%ebp),%eax
0x08048c97 <phase_4+9>: mov %eax,0x8(%esp)
0x08048c9b <phase_4+13>: movl $0x8049958,0x4(%esp)
0x08048ca3 <phase_4+21>: mov 0x8(%ebp),%eax
0x08048ca6 <phase_4+24>: mov %eax,(%esp)
0x08048ca9 <phase_4+27>: call 0x804886c <sscanf@plt>
As of right now, we still don't know what we need to input to diffuse this bomb; we don't know if the bomb wants a combination of integers, chars, etc. To find out we can look above the scanf call and examine "$0x8049958." When we examine this in gdb we see "%d," so we know we need to input an integer of some sort to diffuse our bomb.

Quote:
0x08048cae <phase_4+32>: mov %eax,-0x4(%ebp)
0x08048cb1 <phase_4+35>: cmpl $0x1,-0x4(%ebp)
0x08048cb5 <phase_4+39>: jne 0x8048cbe <phase_4+48>
The key to these bomb labs are the compare statements. Here we see that EBP-4 is being compared to 1. Then below it is the "jump not equal instruction." So if, EBP-4 is not equal to 1, the program jumps to the address: 0x8048cbe. If it is equal, the program continues on. As you can see, if the numbers are not equal you will jump to the address where the bomb will explode (phase_4+76). The numbers will be equal as long as you identified what parameters the bomb wants, which we did; so we're all set here and we live to see another day.
Quote:
0x08048cb7 <phase_4+41>: mov -0xc(%ebp),%eax
0x08048cba <phase_4+44>: test %eax,%eax
0x08048cbc <phase_4+46>: jg 0x8048cc3 <phase_4+53>
0x08048cbe <phase_4+48>: call 0x8049635 <explode_bomb>
So now we see another compare statement represented as a "test" instruction. The test instruction implements a bitwise AND on the value in eax. Here it will jump to address 0x8048cc3 and bypass the bomb call if that value is greater than 0. So we jump to that address.

Quote:
0x08048cc3 <phase_4+53>: mov -0xc(%ebp),%eax
0x08048cc6 <phase_4+56>: mov %eax,(%esp)
0x08048cc9 <phase_4+59>: call 0x8048c58 <func4>
Now we are calling function 4, so we head there. But first let's take a quick look at the end of the program. We see that
our value is being compared to $0xc90f7. Converting from hex to decimal, that gives us 823,543. So we know that whatever happens in function 4, our number must be equal to 823,543 at the end of it, or the bomb will explode.

Quote:
0x08048cce <phase_4+64>: mov %eax,-0x8(%ebp)
0x08048cd1 <phase_4+67>: cmpl $0xc90f7,-0x8(%ebp)
0x08048cd8 <phase_4+74>: je 0x8048cdf <phase_4+81>
0x08048cda <phase_4+76>: call 0x8049635 <explode_bomb>
0x08048cdf <phase_4+81>: leave
0x08048ce0 <phase_4+82>: ret
Quote:
08048c58 <func4>:
8048c58: 55 push %ebp
8048c59: 89 e5 mov %esp,%ebp
8048c5b: 83 ec 08 sub $0x8,%esp
8048c5e: 83 7d 08 00 cmpl $0x0,0x8(%ebp)
8048c62: 7f 09 jg 8048c6d <func4+0x15>
8048c64: c7 45 fc 01 00 movl $0x1,0xfffffffc(%ebp)
8048c6b: eb 1c jmp 8048c89 <func4+0x31>

8048c6d: 8b 45 08 mov 0x8(%ebp),%eax

8048c70: 83 e8 01 sub $0x1,%eax
8048c73: 89 04 24 mov %eax,(%esp)
8048c76: e8 dd ff ff ff call 8048c58 <func4>
8048c7b: 89 c2 mov %eax,%edx
8048c7d: 89 d0 mov %edx,%eax
8048c7f: c1 e0 03 shl $0x3,%eax
8048c82: 89 c1 mov %eax,%ecx
8048c84: 29 d1 sub %edx,%ecx
8048c86: 89 4d fc mov %ecx,0xfffffffc(%ebp)
8048c89: 8b 45 fc mov 0xfffffffc(%ebp),%eax
8048c8c: c9 leave
8048c8d: c3 ret
FUNCTION 4 cliffnotes: Here we see that we are looping through this function until our value is no longer greater than 0 (notice the compare instruction in the fourth line). Our number gets 1 subtracted and then function 4 is called, and then 1 is subtracted again until eventually our number is 0. Once our number is 0, we finally move on and the key to notice here is the SHL instruction. This means Shift left and we see here: "shl $0x3,%eax," which means our number is left shifted by 3. This is equivalent to multiplying our number by 8. Our number is put into the register EAX and then moved to ECX. Then EDX is subtracted from ECX, and EDX contains the value 1. So this is equivalent to multiplying our number by 8-1 which is 7.

We know that the program will loop through as many times as the number we enter, and so to get to the value 823,543 the program would run as:
7*7*7*7*7*7*7. So our number is 7. 7^7=823,543.

So we input 7 and move onto the next phase.
Masters In Comp Sci With No Prior Experience Quote
11-19-2012 , 01:58 AM
BTW, something I learned, unfortunately slightly after I did the bomb lab, is that it's often a good idea to try and translate your assembly into C code when trying to figure out what's going on. It makes things a lot easier to deal with.
Masters In Comp Sci With No Prior Experience Quote
11-19-2012 , 02:36 AM
Which class are you talking about for Machine? 373/374 or a different one? I havent been following well, are you still in the pre-req phase?
Masters In Comp Sci With No Prior Experience Quote
11-19-2012 , 10:46 AM
Quote:
Originally Posted by alex23
BTW, something I learned, unfortunately slightly after I did the bomb lab, is that it's often a good idea to try and translate your assembly into C code when trying to figure out what's going on. It makes things a lot easier to deal with.
That's a good pt, or you can use GOTO language which is in between assembler and C.

Quote:
Originally Posted by PJo336
Which class are you talking about for Machine? 373/374 or a different one? I havent been following well, are you still in the pre-req phase?
373. I'm still in the pre-req phase--I just finished 373 and Intermediate Java. So now I will be taking 374 and Data Structures. However, Depaul has a 6 week winter break which is pretty brutal. I'm going to try to find a project to work on and keep working on getting an internship. My wife works 12 hour days...so if I do nothing for 6 weeks she could lose all attraction to me/kill me.
Masters In Comp Sci With No Prior Experience Quote
11-19-2012 , 12:57 PM
Gotcha. I just finished 374 and I think it was my favorite class so far, albeit very difficult. If you like actual programming, Data Structures is pretty fun as well. Im excited for this 6 week break, its my first since January. Definitely have a ton to try and keep busy with though.

In winter I start the actual graduate level classes, so I'll try and keep you updated if theyre 200 times harder than the pre-req stuff.
Masters In Comp Sci With No Prior Experience Quote
11-23-2012 , 02:56 PM
Quote:
So we input 7 and move onto the next phase.
I didn't even try to read the code nor did I follow along what the bomb lab is exactly (assuming a series of hackmes) but have you tried to nop the actual check of the input or reverse the logic (je->jne etc. so that every entry but 7 will work). That's usually the easiest way to solve these "input value and solved if you entered the right value" type of problems, might be prohibited though
Masters In Comp Sci With No Prior Experience Quote
11-28-2012 , 07:47 PM
ClownTable- No, I didn't try that, but I'll look into it.

I just got back from Mexico and now have 4 weeks to pretty much learn whatever I want until classes start up again. Currently I'm taking a Computational Investing Course on Coursera just for the fun of it and to get some practice using Python. I also just finished that Code book and have a decent understanding of how circuits work; however, I must admit that towards the end of the book I stopped retaining as much--it got pretty tough to follow at times. I'm trying to make a solid list of concepts to learn during December, so if you have any input feel free to share them:

1. Learn and understand .Net framework (that is mentioned on a ton of job criterion).
2. Learn C# (Should be pretty easy since it's supposed to be similar to Java)
3. Continue to learn C
4. Continue to improve at Java (important because it's the language I know best).
5. Begin to build web development skills--most likely create my own website for practice.
6. Maaaaybe create my own mobile app (I have an idea for one that could be fun to attempt).

Any other ideas that you have found either interesting and/or helpful in your own development as a programmer would be great.

Also, if anyone would ever like me to stop bumping my own thread please PM me as I've never really had a "follow my progress" thread on 2+2 except for when I ran a marathon a long time ago.
Masters In Comp Sci With No Prior Experience Quote
11-29-2012 , 03:35 AM
If you want to learn more about operating systems "Nand to Tetris" looks really cool.
http://www.nand2tetris.org/

I'd stick with improving Java first. Research the Java testing frameworks and start writing tests for your code (I'll just assume you don't because most people don't when they start)
Masters In Comp Sci With No Prior Experience Quote
11-29-2012 , 03:46 AM
Quote:
Originally Posted by Go_Blue
Also, if anyone would ever like me to stop bumping my own thread please PM me as I've never really had a "follow my progress" thread on 2+2 except for when I ran a marathon a long time ago.
This is a terrible idea. Keep bumping.
Masters In Comp Sci With No Prior Experience Quote
11-29-2012 , 04:13 AM
this thread is great, please continue to bump
Masters In Comp Sci With No Prior Experience Quote
12-04-2012 , 04:03 PM
Does anyone have any thoughts on VBA in terms of value to an employer? I started learning it this morning, and it seems like it's very easy to pick up. However, is it worth spending a month getting really good at it?

I am putting most of my effort into getting good at Java and C, but it seems like there's so many other "specialty" languages out there that it's tough to narrow down a strict focus. There's so much to learn. It seems like I'm turning into a child that gets distracted by shiny things...every day I see a new shiny thing and think "oh wow, ok, I'll learn that," and then the next day there's an even shinier thing and then I'm like "Ok, well lets learn that... here's so many videos on that subject, this is great!!" etc

Obviously, this is not a productive/efficient/optimal way to go about things.
Masters In Comp Sci With No Prior Experience Quote
12-04-2012 , 08:48 PM
Quote:
Originally Posted by Go_Blue
Does anyone have any thoughts on VBA in terms of value to an employer? I started learning it this morning, and it seems like it's very easy to pick up. However, is it worth spending a month getting really good at it?
Since this is a poker forum you get the poker answer. It depends. What kind of programming job are you looking for?
Masters In Comp Sci With No Prior Experience Quote
12-04-2012 , 09:16 PM
I don't think it's the worst thing you can learn. I don't know if I would spend a full month on it though. Being reasonably proficient in excel definitely has some advantages.
Masters In Comp Sci With No Prior Experience Quote
12-04-2012 , 11:24 PM
Learn Java EE, it goes well with the background you get in Java syntax in the classes and almost every Java job wants you to know it
Masters In Comp Sci With No Prior Experience Quote
12-05-2012 , 07:24 AM
I think every new programmer goes through the candy store faze. I know I was in it. Honestly, I think you should stick with what your professors are teaching you right now. It will definitely help you in your later classes to be excellent at whatever they are teaching you in. If your next class is in Python or something, I would introduce that to myself instead.

Right now, focusing on what some unknown employer wants when you are still so new doesn't sound like an optimal strategy when there are still so many basic concepts to learn. Languages are like religion. Spending time to learn some new language is cool and all, but it has to come from the correct place, which is not to impress other people, but to learn a new tool because the desire burns too strongly to ignore, or you hate working in Java so much that you need to see something else keep your sanity intact. You can't reasonably predict what kind of employer you are likely to face in the future, unless you really are dead-set on working at a Java + MS house.

The other danger is learning a language you love to work in so much that you have zero desire to program in another language. Lisp did me in pretty good: now I hate everything else . j/k... sort of.
Masters In Comp Sci With No Prior Experience Quote

      
m