CSCI 343 - Computer & Information Security

Course Information

Lectures: Hours: T/Th, 13:30 — 14:45PM
Location: King 127
Instructor: Roberto Hoyle (
Office: King 223C
Office Hours: Tuesday 15:00 — 17:00
Wednesday, 15:00 — 17:00
or by appointment
Phone: 775-8424
Discussions: We'll be using a Piazza board for discussion questions. Sign up at The Blackboard site will be used for grades, and possibly for quizzes. I will make sure all announcements are sent to email and Piazza, as well as to Blackboard.
Introduction to Computer Security

Required: Introduction to Computer Security by Michael Goodrich & Roberto Tamassia

Prerequisites: CSCI 241 or consent of the instructor. You should be comfortable with programming with lower level languages, such as C. No prior experience with computer hardware, such as from CSCI 210, is expected, but it will be helpful..

Course Description

From the Oberlin catalog course description:

This class will introduce students to fundamental concepts in computer and information security. Topics that may be covered include: threats and vulnerabilities, malicious software, defensive programming techniques, basic cryptography, models of security, auditing, intrusion detection, basic database security, digital rights management, and issues of laws and ethics related to information security. This course is designed to present a broad survey of the field rather than an in depth study of a particular portion.

Course Goals

My goals and objectives for students taking this course are as follows:

  1. Be familiar with the terminology in use in computer security
  2. Understand the goals and terminology of computer and information security and be able to apply them in diverse areas
  3. Be familiar with modern threats in computer security and how they are commonly mitigated
  4. Understand the security mindset by increasing awareness of exposure to modern computer security threats
  5. Able to critically analyze security needs and requirements
  6. Understand the need for security and auditing
  7. Understand basic cryptographic techniques and be familiar with some modern implementations
  8. Understand common program vulnerabilities and secure programming techniques