Henry’s CSC 300 Archived Resources*

My Session Schedule, Spring 2016

[box]Monday 5-6pm, Richardson Library 105

Thursday 5-6pm, DePaul Center C105

Office Hour – Friday 12-1pm, Richardson Library 105 [/box]

Can’t attend any of my sessions? Check out other CSC 300 SI leaders’ schedules here.

About Me

78320022

Hi everyone! I am excited to be your Supplemental Instructor this quarter, we’re going to have a great spring. I’m currently a Junior here at DePaul getting a degree in Computer Science. I was born and raised in the Southwest Suburbs of Chicago. I’m very interested in music (favorite band: the Smiths), art/design, cats, and of course computer programming! I spend most of my weekdays haunting the CDM building so feel free to say hi if you see me around.

CSC300 is a different kind of computing course than your introductory programming courses. Although it might be difficult to make the transition, if you put in the time and effort, you will get good results. I am here as another resource to use so that you can succeed! As someone who as already taken the course, I will give plenty of useful insight. I am here to help you better understand the material, so please come to the study sessions and email me with suggestions to cover. Also feel free to talk to me in class, I will be there every week.

 

Linked Lists & Java Objects

Here are two videos that do a good job explaining some Java concepts we have covered:

Java objects/classes: video link

Linked Lists: video link

In this class, your making you own objects, and it can be confusing at first, but soon you will be a natural! Remember your book is a great resource and has a great companion website where you can even download a pdf of the book: book site link

Here’s two a great visual explaining the different parts of an object from the point of view of the code.

 

Screen Shot 2016-04-25 at 9.25.18 AM

It’s a good idea to go over the lecture slides and do some of the practice problems from the book & its website. practice problems link

 

Stacks & Queues

Stacks and queues are both really useful ways of organizing data. Although these data structures are built-in to many modern languages, it is still essential to understand how they work so that we can be good programmers and use them effectively!

 

Stacks are First In Last Out (FILO), meaning the last thing you PUSH onto the stack is the first thing that comes out after a POP. Think about stacking dinner plates from the dishwasher, then getting one when it’s time for dinner. You’ll probably just get the one from the top, which is the last one you placed onto the pile.

Queues are First In First Out (FIFO), meaning the first thing you ENQUEUE is the first thing that comes out when you DEQUEUE. Think about a line at the grocery store. You arrive and go to the end of the line. As more people are served, they leave the line from the front in the order they entered.

Here’s a useful video related to Stacks/Queues and Java

Runtimes

In computing, there are usually all sorts of ways to tackle a problem, but coming up with an efficient and effective algorithm can be tricky. One of the ways we describe how good our algorithms are is expressing them as RUNTIMES.

big-o-complexity

As our problem size (N) increases, the amount of operations we need to do is related to our runtime. A runtime of N operations is preferred over a runtime of N^2, because as N grows, N^2 will grow much faster. A runtime of lg(N) is even better. That means that as the problem size grows, the amount of operations we need to do only goes up log base 2 of N (an extremely small number)

A good exercise is to come up with 2 very different values for N and figure out how many more operations need to be done between all the runtimes.

Sorting

As computer scientists, we are constantly sorting data. There are different ways of doing it, some are better than others. Each have their unique advantages and disadvantages. We’ve learned about selection sort, insertion sort, and merge sort. Find the code for these and reason through how they work. This website is also a really useful resource.

Check out the animations and try coding them in Python for extra practice.