- academic
Sep
15
2008

A Brief Summary of Winter 2008 Term

1 year, 5 months ago.

It’s been a while since the end of class and graduation, but I still want to complete this proposed post.

Courses Taken

CSC302 – Steve Easterbrook, CSC336 – Christina Christara, CSC401 – Gerald Penn, and CSC488 – Dave Wortman

CSC302

Like the code suggests, this course is kind of a continuous course of CSC301. However, we concentrated more on paperwork side of software development. While the course was still mainly on agile development in which documents are significantly less than “traditional” model, there are still some quite essential documents that people need to work on to stay on track. Some of them are requirement analysis, risk analysis, progress tracking, release plan, and user manual, etc.

“… I had chances to act as a casual leader who called for meetings, prepared issue lists/agendas …”

Like CSC301, students were assigned into groups of 5-6 and therefore the workload will be shared, so it wasn’t a very workload intensive course, even though some did more and some did less. However the problem was the group I was in only had 4 people, it was not disastrous but quite unfair. However our team was performing well overall given the shortage in manpower. We got a high mark, 95%, and a 90% for the first and last assignments respectively, and received some around average marks for the other two assignments. The course average for the assignments were high 80s I think.

It was very fun to work in groups and I had chances to act as a casual leader who called for meetings, prepared issue lists/agendas, finished own parts relatively early and helped out on other people’s “backlog items”, a frequent word used in SCRUM. The material is highly relevant to practices used in current software companies and absolutely comes handy when team work experience is needed.
[Read the rest of this post ...]

Jan
9
2008

A Brief Summary of Fall 2007 Term

2 years, 2 months ago.

Courses Taken

CSC301 – Greg Wilson, CSC369 – Karen Reid, CSC373 – Derek Corneil, CSC418 – Karan Singh, and an English Course for humanity distribution.

CSC301

The course wasn’t as scary as I thought, probably because the course was being taught for the first time and many things had to be justified. Some concrete things I’ve found useful from the course are the tools we’ve introduced to and asked to use: SVN, Ant, Java Thread system, and Java Profiling Tools. There weren’t too much writing in this course (probably in CSC302). I also find the design patterns to be quite interesting, in fact, I have identified quite a few design patterns in programs I wrote in my former job after I read through the design patterns.That somewhat shows I am kind of smart enough to come up with similar things as experienced software engineers, but what’s more significant is probably that my experience serves as a proof of the generality of the text, and the patterns are really things produced in productions.

Also, it’d be really great to work in a good team and you can often find in some morning before the due date, a big chunk of code is, magically, checked into the repo. and it’s working. The magic, apparently, is from teammates.

“… a big chunk of code is, magically, checked into the repo …”

CSC369

I wasn’t very confident about my C programming skills, but I couldn’t believe how my knowledge of C organized themselves in my head and I suddenly got pointers right and wade through the course with no feeling of insufficiencies in C. The course has been very interesting to me and I couldn’t help correlating the function of OS to computers with that of JavaScript frameworks to the web today. OSs need to be compatible with many types of machines, and JavaScript frameworks need to work with major browsers. General OSs usually provide built-in libraries, and JavaScript frameworks usually provide library as classes as well. General OSs also handles complex inputs like mouse movements, and JavaScript frameworks also often provide a better layer on interaction and also animation, on top of browser, to support better mouse and keyboard inputs. Last, with XHR object, we now may have synchronization problems in web programming too.

After the first two assignments, however, we’ve worked on things mostly irrelevant to web domain. We implemented Virtual Memory and File System. We had an extremely stupid and sad story to share when testing the Virtual Memory assignment. In OS/161, there are two files that the simulator uses to use as swap disks, usually one of them, called IMAGE1.img or something alike. To test the functions, we ran the simulator and executed a series of provided test programs. The virtual memory system will then move pages in and out the file and the memory of the virtual machine. The tests ran very slowly, due to both the CPU speed and virtual memory size, we set the virtual memory size to be small to generate more page faults. So to speed things up, we ran two instances of simulators (the executable files of which are in the same folder) together. We get wrong results, and sometimes crashes. We spent hours and hours to re-read the code and fixing likely “bugs”, when there were probably very few or none. Until the noon after another allnighter, had I realized, after 2 hours of sleep, that the two simulators are using the same image file and we are moving pages between two totally different world! So WATCH OUT! It’s the very first time I get to know what’s “demanding faster, never arrives”.

Here is also what I’ve got after scratching my head 1000 times. A DIAGRAM of the virtual memory system we are implementing. vm161.pdf. It contains some errors, I assure, but I’ll not bother to fix them, in case I gave too much information to web users.

“… couldn’t help correlating the function of OS with that of JavaScript frameworks today …”

CSC418

The course was so much easier than my original thought, a perception I’ve got after seeing people doing fancy, complex, and dazzling effects on computers in the lab. In fact, the course does have a lot of workload, yet I didn’t feel any tiredness, as it’s so fun to work on. Time slipped by as I refine my programs bit by bit, and it could continue. We do get fair bonuses if we were able to add neat refinements than specified in the handouts, resulting in high averages of assignments.

It was supposed to be math intense, but I could only remember some very basic vector concepts being used and the most complex ones were probably the change of base matrix which I had a hard time to understand and memorize vectors from which coordinate are mapped to vectors from which coordinate. The homogeneous transformation was a bit confusing for me too, but it doesn’t affect me too much for solving the problems.

For the course project, aka A3, a compelling scene is much more plausible than a well written piece of ray-tracer or animation alone. I was lucky to have a little bit sense of arts and have rights to use some of my photographs, which helped winning us an alien model. I have had one of the best partners I’ve ever got and we collaborated very smoothly, almost perfectly complementary which means both quality and efficiency.

CSC373

It was the misery of last term. I can’t say it was the one I spent most time on, since I was able to write up assignments between 15 – 20 hours, compared to programming courses that easily bite 30 hours off. I still lack of practice to be prepared for the tests, although I thought I had enough by doing three past tests. The hardest part was the proof of greedy algorithms. For dynamic programming and divide-and-conquer, the solutions in many cases are easy to reverse engineering when you are given clue that you will use a specific type of algorithms. To conquer the course, one has to be able to somehow acquire the instinct to solve problems in exams quick enough, which only comes with intense practices I assume. The course does cover a lot of topics and algorithms, I feel, and one should have a solid foundation of computer algorithms. I like the course but hated my marks. No more comments.

Jan
29
2007

ImagineCup 2007, some fun

3 years, 1 month ago.

It is hard to believe so far so few people joined the second qualifier, which makes this No.1 weigh much less. Perhaps all the attendees tried out in the first qualifier and no one cares about this one anymore, since they are in if they rank within 250 in any of the two qualifiers. For me, I missed the last one and so saved my energy to this round. Am I a bit too over-reactive? I hope not.

About the competition

Most of the problems were straightforward and there are a few bugs in the specifications, which some I managed to guess out, the others I didn’t. However, I captured the screen right away, instead of at a later time, because I will lose the rank quite soon due to the contest rules. When two persons’ final scores are equal, their ranks are determined by the order in which they submit solutions to the hardest problem. See that 75 point boy? He was busy thus he nailed down the hardest one on his first shot, then he sat back and could finish other things up. As long as he finishes all problems before the deadline of this round, he is the 1st. Ziyan is his name.

Woohooo

Why to join?

“It’s … our responsibilities and even professionalism …”

My intention to join this Software Development competition was actually not about any prizes, but take this chance to push myself to learn some .NET stuff, which is being referred to increasingly more popularly and somehow will be an essential skill for any Software Developers to have. Well, learning a new language should be a simple task for Computer Science students, right? It’s not about the OpenSource or ClosedSource technology debates, but our responsibilities and even professionalism require us to know the quite-well-known framework, concepts, and its advantages/disadvantages.

What’s next?

Second round would be harsh. First 24 people out of 300-500 students get in. I don’t doubt my problem solving skills, but it under a time frame. I probably won’t get rid of the thoughts like “O if I can’t solve this in five minutes, I am going to lose” in the middle of the contest. That’s why I don’t like any competition thing, first is I don’t like to see other people lose; then I don’t like to see myself lose either. It’s quite stressful as the two opposite ideas mix together, and take over controls back and forth. The result is that I couldn’t concentrate and most of the time, end up losing it. My philosophy is: if there is a chance that I will lose, even if it’s just a minimal one, in many cases I will just not bother to do it at the first place. To me it is the same as not watching a horror movie because I will feel really sad during the nights.