CS468 Secure Programming and Systems

Location: Art and Design Building L008
Meeting Time: Tuesday, Thursday 12:00 - 1:15
Instructor: Dr. Robert Simon
Office: 5322 Engineering Building
Phone: 703-993-1556
E-mail: simon AT cs dot gmu dot edu
Office Hours: Tuesday 2:15 to 3:15, or by appointment

Description:

This course is designed to provide students with an understanding of the theoretical underpinnings of modern security systems, along with the principles of secure system and protocol design. This course is intended for upper-division computer science students, along with other students whom possess the required programming and system software background. As part of the class students will gain the knowledge and experience of programming and validating a secure and distributed application. Successful completion of this class will give students some of the basic tools in how to design and implement secure systems.

PREREQUISITES

Grade of C or better in CS310 and either CS 365 or CS 367.

REQUIRED TEXTBOOK

Cryptography and Network Security: Principles and Practice, 5/E by William Stallings.
ISBN-10: 0136097049
ISBN-13: 9780136097044
Publisher: Prentice Hall

SYLLABUS

CLASS MATERIALS

All class materials, including lecture notes, are available through your blackboard accounts.

PROJECTS

There will be several programming projects in cryptography, malware and secure communication. All projects will be programmed using the C language.

Please NOTE

GRADING POLICY

Your grade will be calcuated as follows:

No credit if your project does not compile. Projects are due at the start of class, not during class. Late assignments/projects lose 10% credit per day and will not be accepted 3 days after the due date.

No early exams will be given. If you must miss an exam an makeup will be arranged at the discretion of the instructor, provided you have a written and verified excuse.

COURSE OUTCOMES

  1. Describe the fundamental ethical responsibilities computer scientists have in securing and protecting computers.
  2. Explain basic mathematical principles underlying encryption algorithms.
  3. Explain basic mathematical principles underlying authentication algorithms.
  4. Demonstrate an understanding of cryptographic protocols.
  5. Demonstrate an understanding of secure programming via attack models and vulnerability analysis.
  6. Demonstrate an understanding of the fundamentals of secure software design.
  7. Describe how Operating Systems implement security for critical system components.
  8. Explain formal security policy models for access control.
  9. Explain network and transport level security protocols with IPSec.
  10. Illustrate fundamental understanding of security principles by programming projects in cryptography, secure programming and communications.

MISC

GMU Academic Calendar

Honor Code

Disability Resource Center