John Rieffel

Assistant Professor
Computer Science Department
Union College


On this page:




I teach a wide variety of courses ranging from introductory level MATLAB programming to advanced techniques in robots and parallel programming.


CSC497: CS Dept Capstone Seminar (Winter 2012)
Development of the skills necessary for independent research: Reading scholarly works, designing experiments and empirically evaluating their results. Development of a comprehensive senior capstone project proposal. Investigation of professional ethics, skills responsibilities. Prerequisite: CSC-260. Normally taken in spring of the junior year.

CSC333: Parallel Computing (Spring 2012)
Synchronization and communication in concurrent programs. Parallel computing with libraries for shared-memory programming and for cluster computing. Introduction to algorithms for parallel scientific computing. Prerequisite: CSC-250.

CSC270: Computer Organization (Winters 2010,2011,2012)
The world is full of computers. There are microprocessors in your cellphone, watch, kitchen appliances, and perhaps even your sneakers. This is a class about how these computers work. This course will teach you the major components common to all computing architectures and how they interact. Over the course of the term, starting from simple logic gates, we will build all the components of a working MIPS microprocessor. By the end of the term you will have a firm grasp of computer architecture design, and be able to make meaningful comparisons between processors across a variety of performance metrics. You will also gain fluency in the MIPS assembly language programming.

CSC320: Artificial Intelligence (Fall 2009,2011)
Broadly speaking, Artificial Intelligence (AI) is the study of how we can create smart (or smarter) computer programs, ultimately those with capabilities which rival and surpass the human brain. AI techniques are used in a wide variety of fields, including game playing, engineering design, machine vision, and robotics. By the end of this course you will have enough familiarity and experience with the most common and successful AI methods

CSC109: Computer Programming for Engineers (Fall 2011, Fall 2010, Spring 2010)
An introduction to the field of computer science with an engineering applications theme. Topics include math and logical operations, data types, matrices, conditions and decisions, looping, subroutines, numerical methods, and plotting.

CSC325: Robotics (Spring 2011)
The course will cover basic algorithms necessary for motor control. Building on these methods we will discuss higher level navigation for mobile robots, as well as the sensing necessary for localization of the robot in its environment. Finally we will also examine the challenges of motion planning for jointed robots with many degrees of freedom. Prerequisite: CSC-250 or permission of the instructor.

CSC104: Robots Rule! (Spring 2011, Spring 2010)
Introduction to the field of computer science with a robotics theme. Introduces students to algorithms, basic data structures, and programming techniques. Students will build and program robots, exploring mobility, navigation, sensing, and inter-robot communication. Additional class topics include: history of robotics, social and ethical issues, emotionally intelligent behavior and other current topics in robotics. Includes a laboratory.