Posted by: idm04 | 2016/05/08

Bachelor of Computer Science (BCS): Year 2 Term 2 Course Review

List of all courses I’ve taken

 

Courses I took this term:

CPSC 320
CPSC 313
CPSC 317

I was originally enrolled in CPSC 314 and 425 as well, but many CS friends advised me to drop one or two courses, and I soon found out why. I don’t recommend taking more than three CS courses in a term. And even with three CS courses, it’s important to consider how heavy the workload is for each course.

.

.

.

CPSC 320: Intermediate Algorithm Analysis and Design

Summary:

 

Some of the algorithms were difficult to grasp and the assignments were very difficult but overall I thought the course was fine.

Jan was the instructor when I took the course.

Grading scheme:

Assignments (8) 20%
Midterms (2) 30%
Final 35 – 50%
Voluntary quizzes (10) 0 – 15%

 

Each quiz had weight 1.5%. If we scored better on an individual quiz than the final, then it will be used to calculate the final grade, and the final will be worth 1.5% less.

.

Syllabus:

– Algorithm design techniques: greedy algorithms, divide & conquer, dynamic programming, randomization etc
– Mathematical tools: O notation, recurrence relations, amortized analysis

We skipped over some material including “P versus NP”

In-class activities:

We would go over an algorithm for some problem, write pseudocode implementing the algorithm for the problem, analyze the running time of the algorithm, and then try to find ways to improve the running time.

The prof wrote notes on the projector, they’re not always posted online so I felt it was important to take notes.

Quizzes:

I didn’t study for any of the quizzes, but I really found them helpful because this was one of the classes where falling behind was really bad for the next lecture. This is one CS course I would not skip.

Assignments:

There were eight assignments in total, due about 1.5 weeks apart. They could be done in pairs but I did all of mine alone. They were very difficult and I highly recommend finding a good partner and starting early on each assignment.

The prof had a survey for each assignment polling for how long it took to do the assignment (not including reviewing notes). It seemed like on average people spent seven hours on each assignment.

Textbook:

Algorithm Design by Kleinberg and Tardos, 2005.

I did not read the textbook, but my friend said it was useful for them. I found that reading the slides was sufficient.

Exams/Tips:

We got one cheat sheet, double-sided for the midterms, and three cheat sheets double-sided for the final.

Do not throw away your midterm cheat sheets because you can use them for the final!!

The exams were fairly straightforward and were based directly off the algorithms we learned in class as well as the questions about the algorithms that are on the lecture slides. Some questions were directly from the slides or tutorials.

I recommend going to tutorials because it gave me extra practice for doing exercises and better understanding the algorithm, and some tutorial questions (or similar questions) did appear on the exam.

To study for the exam, I just went through the lecture slides thoroughly, making sure I could understand everything and could answer all the questions on the slides, e.g. questions about running time for a specific pseudocode example. Then I wrote notes/examples in my cheat sheet, and finally I re-did some tutorial questions and/or the practice exam questions. If I had time I would also look back at quiz questions which were somewhat representative of exam questions, and then assignment questions.

.

.

.

CPSC 313: Computer Hardware and Operating Systems

Summary:

The assignments were long and difficult; the quizzes were short and difficult. I enjoyed the material but I learned most of it from the textbook.

Grading scheme:

Assignments (4) 24%
Quizzes (4) 28%
Final 48%

Acton was the instructor when I took the course.

.

Syllabus:

  • Sequential CPU instructions (Y86 instruction set architecture) and various CPU stages
  • Pipelined CPU instructions – executing multiple instructions in a pipeline, one for each stage, to increase throughput
  • Memory hierarchy – different levels, caching, locality
  • File systems – Disk characteristics, FAT, Unix, Standard I/O
  • Virtual memory – memory organization, translating virtual address to physical address

In-class activities:

Typical lectures. I think we could have done more exercises in class.

Quizzes:

The quizzes were in-class. We spent the first 30 minutes doing an individual quiz, and the next 15 minutes doing a group quiz. The quiz mark was a combination of the individual and group quiz marks, or just the individual quiz mark if we did better on that.

Make sure to use the learning goals (if provided) on Piazza to determine how to study for the quiz. Many quiz questions are quite tricky and I felt many questions were not covered much in class.

The average and median for Quiz 1 were 59% and 57% respectively.
The average and median for Quiz 2 were 58% and 59% respectively.
The average and median for Quiz 3 were 66% and 67% respectively.
The average and median for Quiz 4 were 59% and 59% respectively.

Assignments:

There were four assignments in total, and I thought they were quite difficult. The first one was really easy; just involved translating X86 to Y86. The remaining three were programming assignments (in C).

Assignments could be done in pairs or alone.

Make sure to start and get help early. Each assignment except the first one took us tens of hours each. It was pretty “easy” to get near perfect on the assignments because the requirements were laid out very clearly, but getting to the finished product took a lot of time and effort. I recommend starting at least two weeks in advance.

The second assignment was particularly bad for me because I had forgotten how to C.

The assignments were good practice for coding in C, but they were not helpful in learning the lecture material.

The average and median for Assignment 1 were 88% and 96%, respectively.
The average and median for Assignment 2 were 77% and 88%, respectively.
The average and median for Assignment 3 were 85% and 91%, respectively.
The average and median for Assignment 4 were not given.

Textbook:

Computer Systems: A Programmer’s Perspective 3/E by Bryant and O’Hallaron

Exams/Tips:

I focused my studying on the learning goals. I did not learn much during lecture and had to read the textbook for all the sections except the first one on Y86 ISA, which was mostly review from CPSC 213.

Tutorial questions were not posted online, so definitely go to tutorial because there wasn’t that much practice material elsewhere. Tutorials were also used for getting help with assignments, which were only helpful if you started the assignment “on time”. Aside from tutorial questions, the recommended textbook questions were often useful as well.

.

.


.

CPSC 317: Internet Computing

Summary:

 

Assignments were long and difficult, quizzes were short and difficult. Some of the material was interesting — I particularly liked the topic on security. I also appreciated learning about fundamental protocols of the internet like UDP, TCP, DNS, but there were many technical details covered in the course that were less interesting to me.

 

Grading scheme:

Quizzes (3) 24%
Assignments (3) 24%
Final 52%

Acton was the instructor when I took the course.

.

Syllabus:

  • IP addresses and routing
  • Link layer and ARP
  • Network structure and construction
  • Layering
  • Layers & Connection Multiplexing
  • UDP
  • DNS
  • Performance Metrics
  • Reliable Delivery
  • Multimedia (skipped this)
  • TCP
  • Application Layer Protocols
  • Security & Privacy

 

In-class activities:

Other than regular lectures, sometimes we would do a worksheet. Pre-class Socrative questions were posted before each lecture. Unfortunately, there was no way to access the questions and answers afterward.

Quizzes:

The quizzes were in-class. We spent the first 30 minutes doing an individual quiz, and the next 15 minutes doing a group quiz. The quiz mark was a combination of the individual and group quiz marks, or just the individual quiz mark if we did better on that.

Make sure to use the learning goals (if provided) on Piazza to determine how to study for the quiz. Many quiz questions are quite tricky and I felt many questions were not covered much in class.

The average and median for Quiz 1 were 65% and 64% respectively.
The average and median for Quiz 2 were 71% and 74% respectively.
The average and median for Quiz 3 were 63% and 65% respectively.

Assignments:

There were three assignments in total, and I thought they were quite difficult.

Assignments could be done in pairs or alone.

The first two assignments were in Java and the last one was in C.

Make sure to start and get help early. Each assignment except the first one took us tens of hours each. It was pretty “easy” to get near perfect on the assignments because the requirements were laid out very clearly, but getting to the finished product took a lot of time and effort. I recommend starting at least two weeks in advance.

The assignments were good programming practice, but they were not that helpful in learning the lecture material.

The average and median for Assignment 1 were 88% and 93%, respectively.
The average and median for Assignment 2 were 88% and 96%, respectively.
The average and median for Assignment 3 were 71% and 78%, respectively.

Textbook:

Computer Networking: A Top-Down Approach 6/E by Kurose and Ross.

Exams/Tips:

I focused my studying on the learning goals. I did not learn much during lecture and had to read the textbook for pretty much all the sections. The textbook was more detailed than our purposes for many sections, so I skipped over some of the details that weren’t pertinent to the learning goals.

Tutorial questions were not posted online, so definitely go to tutorial because there wasn’t that much practice material elsewhere. Tutorials were also used for getting help with assignments, which were only helpful if you started the assignment “on time”. Aside from tutorial questions, there were recommended textbook problems and Socrative questions if you saved them. Most of these were good for practicing.

The kind of questions people had most trouble with seemed to be on performance metrics (calculations) and I felt we could have used more practice with that topic.

.

.

Advertisements

Leave a comment. Bloggers like them ;)

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Categories

%d bloggers like this: