Posts tagged ‘grad school’

Research Question Idea #3

When we started using ReviewBoard with MarkUs a few months back, all of a sudden, commits to the repository seemed to slow down: we would take more time cleaning up our code, and polishing it for others to see.

Our commits were usually quite large too.  This is because we were all working on different sections of the code, and we wanted to commit stuff that “instantly worked” and was “instantly perfect”.  So after days of silence, 1000 lines of code would suddenly go up for review…and as Jason Cohen can probably tell you, the number of defects found during review decreases as the amount of code to look at increases.  So, the reviewer would skip through 1000 lines, assume most of it was OK, and give it the Ship It.

Yeah, I know.  Awful.  I wonder if this is a standard newbie mistake for student groups just starting out with code review…

So, study idea:

Have two separate groups working on some assignment.  Have Group 1 commit to their repository without any review process.  Have Group 2 do pre-commit reviews using a tool like ReviewBoard.

Now check out the size, frequency, and readability of the repository diffs of each group.  Might generate some interesting data.

Anyhow, in our defence, we seem to have calmed down on MarkUs.  Diffs up for review are pretty small, and get posted relatively frequently.  Using ReviewBoard on MarkUs has made me a believer.  Testify!

Research Question Idea #2

(Read this if you have no idea what I’m talking about)

Why not go right for the throat?

How about I just round up all of the instructors who teach courses with group assignments, and ask them why code review tools aren’t provided or encouraged.  Or maybe they’ve tried, but they ran into a stumbling block.  Or perhaps the whole idea of using code review tools flies in the face of some important teaching method.

I won’t know until I ask.  So why not just ask?

It might not be a quick, sharp, clever scientific study, but it sure might generate some interesting material for examination.

Coming Up with Interesting Research Questions, and Idea #1

So my supervisor Greg Wilson has challenged myself and fellow grad student Zuzel to try to come up with one idea for a study per day until our next meeting.

I’ve been researching the use of code reviews in CS undergraduate classes, and this is what my ideas will center around.

My first idea is a knock-off of one that Jorge Aranda performed a while back:

Take a group of students, and tell them that they will all be working together on an assignment. Give them a spec for their assignment.  Get a time estimate in hours as to how long they think they will need to complete the assignment.

Take a second group of students (who were not present when the first group was around), and tell them that they will be working together on an assignment.  Give them the same spec that the first group had.  Tell them that they will need to use a peer code review tool like ReviewBoard for every commit.  Get a time estimate on how long they will need to complete the assignment.

Compare the two sets of estimates.

I predict that the second set will have a higher range of values.  I wouldn’t find that surprising.  I’m more interested in how much higher the estimates are.

I remember my first reaction to using ReviewBoard on MarkUs:  This’ll slow us down.  We don’t have time for this.

I’m curious if others feel the same way.

Code Reviews

My graduate supervisor has asked me to look into the following problem:

Code reviews. They can help make our software better. But how come I didn’t learn about them, or perform them in my undergrad courses?  Why aren’t they taught as part of the software engineering lifecycle right from the get-go?  I learn about version control, but why not peer code review?  Has it been tried in the academic setting?  If so, why hasn’t it succeeded and become part of the general CS curriculum?  If it hasn’t been tried, why not?  What’s the hold up?  What’s the problem?

I’m to dive into academic papers regarding the above, and blog about what I find out.

Stay tuned.

Courses for Graduate School

With summer coming to a close, my upcoming school year is starting to piece itself together.  I’ve been assigned my research supervisor, and I just selected my courses:

Fall:

  • CSC2125F:  Topics in Software Engineering: Government 2.0
  • CSC2526F:  HCI: Topics in Ubiquitous Computing

Winter:

  • CSC2431S:  Topics in Computational Molecular Biology
  • CSC2511S:  Natural Language Computing

Psyched.

In Defense of Grad School

I’ve received lots of praise and pats-on-the-back for my acceptance into Grad School here at UofT for Computer Science.

However, there’s another side of the coin.  While I was still mulling the decision, I mentioned it to a few people here and there, and sometimes I got a strange look…like I’d agreed to have a lobotomy, or take experimental medication or something.

Believe it or not, I’m still getting it from time to time.  It’s strange.

At one point, I posted my Grad School status on Twitter, and got back the response “Don’t!  It’s a trap!”  Trap?  Really?  Have aliens taken over the school?  Am I unwittingly joining some bizarre cult?  Am I going to get pushed down an empty elevator shaft on my first day?  Awful hazing rituals?  What’s going on?

What’s wrong with Grad School? I’ve asked a few people this question, and gotten the following (paraphrased) responses:

  1. You’ve been in school too long.  Get out now and enter the work force!  Don’t you want to have fun?
  2. Grad School is expensive.  You’re going to go deeper into debt.
  3. If you choose a thesis/subject that you end up disliking, it will be an awful experience
  4. Work first.  Then go to Grad School.  Just trust me.
  5. You’re educated enough – you don’t need a Masters degree.  You’ll learn everything you need in the field.
  6. The courses are super hard and boring.

Here are my responses, in defense of Grad School – they’re numbered to correspond.

  1. Who says Grad School isn’t fun?  I really enjoy the field of Computer Science, and this is my opportunity to do some cutting edge research.  The whole point of a thesis (I believe) is to focus on something in the field and make it my own – to master it.  This means background research, thesis, experiments, conclusion, the whole bit.  That’s the science part.
    Also, there’s a self-serving economic payoff:  Bachelors degrees are going down in value.  Lots of people have a B.Sc.  A Master’s degree stands out, and will bring higher pay and more interesting jobs.
    My uncle once said that his days in Grad School were the most educational because of the people that surrounded him, and the conversations that he had.  I think I’ll find that here, and it’s exciting.
  2. Believe it or not, I’m actually getting paid to do this.  Sure, I owe the University a chunk of money.  Thankfully, the Department of Computer Science is paying for it, and I should have enough left over to live a modest lifestyle.  Living like a student for one more year isn’t so bad – it could certainly be worse.
  3. Why would I choose a thesis or subject that I don’t like?  From what I’m told, the first few weeks of Grad School are spent scouring around with a supervisor, trying to nail down a thesis subject.  I plan to do one better, and try to nail a thesis subject down this summer.  Once I’ve got it nailed down, I’ll do the background reading, and try to figure out some interesting experiments.  It’s easier said than done, but I’m not going to be stupid enough to pick a thesis on something I really can’t stand.  Am I going to do my thesis on complexity theory?  No, of course not.  Am I going to do it on how to teach software engineering students design patterns in a more visual, animated way?  Who knows, maybe.
  4. This answer assumes that I haven’t worked before.  I’ve worked.  I’ve been out there.  “You haven’t seen the real working world”…well, maybe I haven’t, but I’ve seen something that’s probably pretty close.  Working three summers at the school board hasn’t been a cakewalk.
    Some might argue that working for a while before going to Grad School will help me to gain the discipline necessary to work in an unsupervised environment.  Well, I have to tell you, I was barely supervised at the school board.  They gave me a task, and I did it to the best of my ability, with little-to-no oversight.  I set my own schedules, I dealt with clients directly.  I can work on my own.  I can manage my time.  I know how to work hard.  Don’t give me that “real world” crap.
  5. Like I said in #1, a B.Sc. isn’t what it used to be.  Lots of people have them, and it’s probably becoming less useful as a marker for separating the wheat from the chaff.  It’s only 17 months more work, but I think the payoff is going to be considerable.
  6. Maybe.  Thankfully, I’m only taking two a maximum of three per semester.  Workload does not frighten me anymore – I’ve been overloading myself for years, and I’m fine.  I’m not at all saying that Graduate School courses are going to be a breeze – but, and I hope I don’t sound arrogant,  I’m more-or-less used to doing the practically impossible.

Have I missed any reasons for not going to Grad School?  Do my rebuttals miss something entirely?  It’s a bit of a moot point now – I’ve already accepted the offer.  But if there are any interesting reasons that I missed, I’d love to hear them.

Hello Graduate School

Well, it’s official.  Today, I handed in my acceptance form for Graduate Studies here at the University of Toronto in the Computer Science Department!

Now I just need to keep my cGPA above 3.2…

Assuming that I get my B.Sc. without incident (because who knows, maybe the University will fight me for it…citing missing courses, insufficient credits, etc.  I’ve checked all of this with New College and the Drama/CS departments, but I’ve been here too long not to be ready for bureaucratic tom-foolery…), I think I’ve got an interesting year or so ahead of me.

This summer is already looking quite busy, but here’s what I’m looking forward to next year:

Interesting Courses

I’ve been leafing through the Graduate course calendar, looking for courses that sound good and fulfill my breadth requirement.  Here are the courses I’ve underlined as “interesting”.  Note that I haven’t checked the timetable at all to see if these conflict with one another.  They just sound interesting:

  • 2125H – Software Development Tools and Practices:
    This course is an introduction to software consulting practices. Students will be paired with clients whose problems require advanced knowledge of computer science to solve, and will then work under the direction of the course instructor to develop and deliver useful results. Topics will include requirements elicitation, scope negotiations, deployment concerns, and disaster recovery.
  • 2412H – Computer Algebra
    Algebraic theory that underlies symbolic and algebraic manipulation by computer. Chinese Remainder and interpolation theory, fast algorithms for computations with integers, polynomials and power series. Newton and Hensel iteration, polynomial and integer gcd algorithms, factorization of polynomials, the fast Fourier transform, solving systems of polynomial equations, Gröbner bases. The Maple computer algebra system.
  • 2426H – Fundamentals of Cryptography
    Rigorous definitions of security for pseudo-random generators, digital signature schemes, secure hash families, and public-key encryption.. Methods (including number-theoretic conjectures) for constructing these secure cryptographic primitives. Methods for using secure primitives to achieve secure session-key exchange and secure sessions.
  • 2511H – Natural Language Computing
    Introduction to techniques involving natural language and speech in applications such as information retrieval, extraction, and filtering; intelligent Web searching; spelling and grammar checking; speech recognition and synthesis; and multi-lingual systems including machine translation. N-grams, POS-tagging, semantic distance metrics, indexing, on-line lexicons and thesauri, markup languages, collections of on-line documents, corpus analysis. Python software.
  • 2529H – Computer Animation
    The primary focus of this course is on kinematic and dynamic techniques for character animation. Topics include physical modeling and simulation, motion planning, control and learning algorithms, locomotion, motion trajectory optimization, scripting languages, motion capture, and motion editing. Students will implement algorithms and interactive animation tools and then use these to produce motion for animations.
  • KMDI1001 – Fundamental Concepts in Knowledge Media Design
    Knowledge media are systems incorporating computer and communications technology that enhance human thinking, creativity, communication, collaboration, and learning. Examples include the Web, email, instant messaging, knowledge management systems, digital libraries, collaborative virtual environments, video conferencing environments, and webcasting systems.
    This course reviews the emerging field of knowledge media design, and the use of digital media for communications, collaboration, and learning.

I’m also looking into the possibility of hopping (back) over to the Computer Engineering Department to see if I can take ECE568H1 – Computer Security.  My general dislike for engineering courses notwithstanding, this still sounds like an interesting possibility.

(Note to self:  the word “notwithstanding” just felt right to put there, but is that correct usage?  I have no idea…)

Thesis

Well, it’s no surprise – a Master’s student is expected to produce a paper in order to graduate.  I have absolutely no idea what I’ll be doing my thesis on, but the number of possibilities is exciting.

It’d be nice to somehow merge Drama and Computer Science into a thesis – and I think it’d be an appropriate finale for my career here at UofT.  It’s something to mull over while I have time, anyhow.

Launching OLM

OLM is going up in the fall.  Whether or not I work on it this summer, as a TA, I’ll probably be using the software to mark and return student code.  “Eating one’s own dog-food” might be appropriate here – though I prefer, “eating the sandwich I just helped to make”.

Drama

A lot of my friends from the Drama department are either graduating in June, or staying on for one more year.  A bunch who are graduating are staying in the city, and the prospect of doing some work with them outside of school is exciting.

We’re all very spoiled here at the UCDP – modest budget, multiple rehearsal spaces, etc… working on our own stuff outside of school might be a very humbling experience.  Humbling as in, rehearsing in alley ways or rooftops, and using an audience holding flashlights instead of our own lighting grid.  Cool.

Operation: Party Mansion

This one is still in the works.  Some buddies of mine from highschool (who are also my roommates) are looking to buy some property in, or around downtown Toronto.

This may sound ambitious, foolhardy, and naive, but we’re serious, and a lot of legwork has already been done in order to get this moving.

Ideal scenario?  Next year, I’ll be living in a big house with my highschool buddies.  And isn’t that living the dream?

Anyhow, as I was saying, my Grad school papers are in, so my brain is going to put that on the backburner for a while.  Now I have to focus on my CSC301 midterm for this Wednesday, and an evidentiary analysis on CIA/JFK Assassination links for INI304.