CPSSD First Semester
I've just finished the first semester of my university course Computational Problem Solving & Software Development (CPSSD) at Dublin City University. I loved it. However, the course is only in it's third year in action, so there wasn't a lot out there in terms of discussion about it, or advice for people going into it. So I'm writing this post with my experiences of it for:
- People interested in doing the course
- People who've decided to do the course and are looking for tips
- People in other courses looking to compare and get jealous.
Roimh an gCúrsa
I had a pretty good CV going into the course. Competitive programming helped me hugely. Do some if you're not doing it already; if it's not too late, do the AIPO. You'll also get more information about the course at the AIPO no doubt.
My interview went very well. There were 2 interview rooms running in parallel, and 3 days of interviews, so other people had different experiences. However, the problem I was asked was remarkably straight-forward. If it were a problem at a programming competition, almost every competitor would solve it. I'm not sure if I'm allowed to share what it was exactly, as they might be planning on re-using the same questions for future interviews. If they are, you're good. It was a fair question for a pre-uni programmer, and was no more difficult than any of the first 3 problems on Project Euler.
If you're looking to stay on campus, put Hampstead higher in your preferences than Larkfield. In Larkfield, there are two bedrooms sharing a tiny kitchen and a tiny bathroom. In Hampstead, there are 5 bedrooms, each with their own bathroom, and all sharing a very reasonably sized sitting room and kitchen. Choose #TeamHampstead.
As a sidenote, staying on campus is great.
Ar an gCúrsa
I chose the course so I would be surrounded by the best people. I got that. Between the 14 other first year CPSSDs, I've found some of my best friends.
The course content is pretty good. There are a few modules that aren't that exciting, but it's the same in every computers course in the country. Here's a few bits of advice though:
If you have the module choice between Computer Systems and Networking, choose the latter. I chose the first, and there was nothing major covered in it that I didn't already know or would be difficult to learn on your own. There were a few very nice things covered (2's complement, binary maths, DeMorgan's laws), it'd be very doable to learn those on your own. I might see about turning up to the Networking lectures in the second semester to compare, but I suspect it'll have more new content for me than Systems did. Although this all said, Monica Ward was amazing at teaching the Systems module.
Figure out unit testing (wiki) early; in time for your first project. It might have been rectified by the time you're reading this, but for us, it was just assumed we knew testing. We were penalised almost from the beginning for not doing it, even though it was never mentioned before we submitted our code. It's also a very important workplace skill, so start testing as soon as you can.
Do your Netflixes early. For the uninitiated, the Netflix problems are a set of problems given to the first years to complete within a time limit on your own. Ours are worth 15% of our grade. The year before us were given 19 or something, and I think the full semester to do it. Ours were split up; we were given 3 compulsory ones initially, and then later we were to choose 3 further ones to do our of 6 options. The compulsory ones were okay, as they had different deadlines. However, we were given a good few weeks to do the options, and most of us let ourselves get caught up in the CA172 projects, and left the Netflixes until close to the deadline. It was stressful. I think a few people submitted late. Do them early.
Document everything during your sprints. Document your code, document your research, document your documentation. If your demo at the end of the sprint is a flop (like mine was), let your documentation show that you did put the work in, and don't just let them take your word for it.
Don't drop out. Do cool projects in your free time. Get those sexy little green Github squares. Join Redbrick and get on committee. Make a one-page CV. Get rid of the second page you sneakily added and make it one page. Start looking for summer internships from the second week. Install linux on your first day and use it exclusively from then on. Get in contact with the older years of CPSSDs (and brickies) and leech onto them for knowledge and gossip in equal parts. Keep up with programming news. Do online programming problems (I recommend Project Euler). Worship the gods of CPSSD (God #1, God #2). Be so good they can't ignore you. Bring pride to the CPSTD master race. Follow me on Twitter.