CS468 Secure Programming and Systems

Location: Art and Design Building L008
Meeting Time: Monday, Wednesday 1:30 - 2:45
Instructor: Damon McCoy
Office: 5328 Engineering Building
Phone: 703-993-3339
E-mail: mccoy@cs.gmu.edu
Office Hours: Tuesday 2:00 to 3:00, or by appointment


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.


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


Cryptography and Network Security: Principles and Practice, 6/E by William Stallings.
ISBN-10: 0133354695
ISBN-13: 978-0133354690
Publisher: Prentice Hall



All class materials, including lecture notes, are available through your blackboard accounts or on the course website CS468 S2014.


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

Please NOTE


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.


  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.


GMU Academic Calendar

Honor Code

Disability Resource Center