CSC 150
Data Structures


Instructor: Prof. Chris Fernandes,
Lecture portion: MWF 10:30-11:35 in Wold 128
Lab portion: Thursday 1:55-3:40 in NWSE 104
Office Hours: Mon 12-2, Wed 2-5, Th 4-5
or anytime my door's open!
Office: 220 Steinmetz Hall
Phone: 388-6401
Course Webpage:

Text (1 required). Available at the Bookstore:

Michael Main, Data Structures and Other Objects Using Java. 4th ed, Pearson, 2012.

Course Summary

CSC 150 is the second core course in the CS major curriculum. Its purpose is to refine your programming and problem-solving skills to gain a sense of "programming maturity". You've gained a lot of powerful tools in your first programming course. Now we focus on using those tools in a logical, efficient way so as to create modular, reusable programs instead of cumbersome, haphazard ones.

We'll be using the Java programming language in this course, and while we'll be learning many of the features of that language, the concepts and skills taught are more important than the specific programming language. Most of you used a different language in your first programming course, so we'll spend some time in the beginning learning how to transfer your skills from one language to another. This skill of learning new languages is an important one, since real-world programmers are asked to do this all the time, and you'll be asked to do it on your own too if you take more advanced CS courses.

By the end of the course, you should be proficient in the following:

I hope to at least cover the following topics:


You should have already taken an introductory programming course in some language (not necessarily Java). If you took that class here at Union (CSC 10x), you need to have gotten a C- or better to be eligible to take this course. See your instructor immediately if you have not taken an introductory programming course or don't meet the grade prerequisite.



Note that you must get a C- or better in this course in order to take any other course that requires Data Structures as a prerequisite.

Academic Dishonesty

Struggling on your own to figure out what to type next is where a lot of the learning happens in CS. Give yourself the opportunity to do this -- ALONE. Here are some specific things to avoid (this is not a complete list):

Ok, so what should you do? Here are some tips:

You're going to write and see a lot of code in this class. A good question is: what sources can you legally take code from for your projects?

It is ok to reuse code...

It is NOT ok to reuse code...

Here's the bottom line: except for the above, you have to write all the code yourself, from scratch. For everything you turn in, you must explicitly cite any source (like a web page tutorial or a helpdesk person) that you use to help complete an assignment. Again, this is similar to writing an English paper; if you use a quote or material from someone else, you have to give credit where credit is due. Otherwise you are inappropriately plagiarizing or borrowing ideas. You don't have to cite help from me, though.

We have an honor code now and I trust y'all to follow it. Read up on it at All suspected violations will be reported to the Honor Council chair and Dean of Studies.

What you need to do

To prepare for class, you are required to do the following:


Union College facilitates the implementation of reasonable accommodations, including resources and services, for students with disabilities, chronic medical conditions and temporary disabilities resulting in difficulties accessing learning opportunities. All students needing services must first register with Accommodative Services located in Reamer 303. It is strongly recommended that accommodations be requested within the first two weeks of the term. Last minute requests can be denied. Any student with a documented learning disorder is welcome to come talk to me privately about options for completion of exams and homework assignments.

The Bottom Line

Ask questions and seek help. This is the most important point of all. I live to answer questions. Don't be afraid to come to my office every single day if you want. It's better for everybody (you AND me) if you understand things sooner rather than later. More often than not, there's a line of people waiting to see me on the day before a project is due. You'll get the help you need faster by starting on projects sooner rather than waiting until the last minute.