You are not going to find a richer set of elective courses.  We challenge you to try to take them all!

CISC 215 - PC Systems

Although this class is more commonly called the "Build your own computer" class, it is really a whole lot more.  The class provides students the opportunity to take computers apart and learn about all of the components and how they operate together.  At the end of the semester, the students in the class get to build the new servers that will be used in the CISC Clubhouse.  Students in other CISC classes as well as students working on their thesis projects use these servers when more powerful computers are needed.  The topics include the technologies of the motherboard, processor, RAM, hard drive, and video sub-systems. 

This course offers students the opportunity to take a CompTIA certification exam.  The A+ certification is an industry standard exam designed to signify that the certified individual possesses the knowledge and skills essential for a successful entry-level computer service technician, as defined by experts from companies across the industry.

CISC 240 - Computer Organization and Assembly Language

This is the course where you really learn how computers work. First, you learn how they store information as you delve into the world of binary, hexadecimal, and two's complement mathematics. Then it's off to machine language and assembly language programming. Not only are these important in their own right, byt they also provide deep insights into high level languages.

In the last part of the course, we turn to digital electronics. Starting with Boolean algebra, we'll learn how things like adders, ALU, memory, and CPUs work on a fundamental level.

CISC 305 - Artificial Intelligence

An introduction to machine intelligence. Topics include search techniques, game playing, automating reasoning, problem solving, natural language understanding, knowledge representation, expert systems, pattern recognition, computer vision, robotics, machine learning, and neural networks.

CISC 320 - Programming Languages

In the class we briefly review the history of programming languages. Then, we study the theory and principles underlying today's sophisticated programming languages.

The lab sessions are really special. We spend the entire thirteen week semester developing one large project.

  • First, we learn a very simple machine language.
  • Then, we program a virtual machine to run programs written in the machine language.
  • Next, we learn an assembly language that corresponds to the machine language.
  • Our next step is to write an assembler to convert assembly language programs into machine language programs.
  • Then, we write a couple programs that will be critical for our final two steps.
  • Now we learn a simple variant of the Basic language.
  • Finally, we write a compiler that converts Basic language programs into machine language.

Students who have completed this project will have an incredibly impressive project to talk about on job interviews. Or, if they go to graduate school, they will find that they have a leg up because this type of project is typical in graduate school.

CISC 325 - Data Structures

Data Structures is a pretty standard course at most schools. The critical data structures and algorithms that every computer scientist must master are carefully and systematically covered in the classes and labs of this course.

This course, however, is special in that it goes beyond the fundamentals of a typical data structures course. Long ago, architects realized that there are certain fundamental design patterns that go into all good architectural plans. A number of years ago, it was realized by a group of four computer scientists, who have become known as the Gang of Four, that there are some twenty odd design patterns that are critical to good programming. As time permits, we delve into these design patterns.

CISC 345 - Computer Security

A comprehensive introduction to computer security. Topics covered include network reconnaissance, network scanning, application attacks, operating system
attacks, network attacks, denial-of-service attacks, Trojan Horses, backdoor programs, rootkits, computer viruses. Students will learn how vulnerabilities are exploited, and how to prevent, detect, and respond to an attack.  

CISC 371 - Numerical Analysis

The development of numerical methods and their associated error analysis. Nonlinear equations, systems of linear equations, interpolation, numerical differentiation and integration. Programming of appropriate algorithms with emphasis on accuracy and efficiency.  

CISC 375 - Optimization Techniques

A survey of the methods used to obtain optimal solutions to linear problems. Emphasis on linear programming, simplex algorithm, duality transportation and assignment problems, shortest route and maximum flow problems, game theory decision trees. Additional topics may include integer programming, dynamic programming, PERT-CPM, graph theory, and queuing theory.

CISC 430 - Operating Systems
n the classroom, we learn about the underlying principles of modern operating systems. Learning what makes operating systems work on a fundamental level is absolutely critical for a computer scientist.

We spend some of the laboratory time in this course learning multi-threaded programming. More and more programming involves two or more things happening at the same time. Just like having two people working together, this does not just double the difficulties; in this course we spend some time learning how to deal with them.

Then comes the really fun part of the lab. In the CISC Clubhouse students are given computers with no operating system whatsoever.

  • Their first exercise is to install and master desktop Ubuntu Linux.
  • Once they have mastered Desktop Ubuntu Linux, students install Ubuntu Linux Server. Ubuntu server has no graphical interface. Working at the command line, students learn to install all types of services: databases, blogs, webservers, everything you can imagine.
  • Finally, we go on to create our very own Ubuntu Cloud.

This course combines theory and practice in the way that makes Hartwick special.