Fernando Schapachnik wrote...

> I've considered 'secure coding' courses, and the idea always 
> look kind oversized. How much can you teach that students can't read 
> themselves from a book? Can you fill a semester with that? I'm
> interested in people's experiences here.

I suppose that depends largely on how you define "secure coding"
and how much depth you want to go into.

For the past 2 years I've taught a CS masters level course in
computer security. In addition to "secure coding" practices, I
also discuss:

    * fundamental concepts of security (e.g., authentication,
      authorization, confidentiality, data integrity, nonrepudiation,
etc.);
    * risk management and threat models;
    * cryptographic foundations;
    * authentication, access control, and auditing;
    * common threats and vulnerabilities, and
    * designing secure systems.

For the most part, because of time constraints and the fact that we are
trying to cover broader things then simply coding-related issues, the
"secure coding" practices are interspersed with the other topics, where
and when appropriate. (If you want more detail, you can find the
syllabus
at http://cs.franklin.edu/Syllabus/comp676/.)

> Adding a 'security chapter' to existing courses seems more 
> appropiate (at least to me). At the end of our Programming II
> course, I showcase students the vulnerabilities that can be
> understood or are related with what they've saw in
> class: these includes buffer overflows, input validation, integer
> over/underflows, race conditions, least priviledge, etc. I 
> stress that these are only samples, and point them to links
> (like David's great 'Secure Programming How-To') and books.
> I haven't had the chance to evaluate the impact of that, but
> it is on my to-do list.

I think that is a good approach, although I prefer mixing these
issues in where/when they might be more appropriate (e.g., discuss
security issues arising from race conditions when discussing
multi-threading, etc.) rather then saving them up for the end--if
only because there's a chance that they get crowded out if the
pace goes slower than expected.

> Similary, some other courses where security can be plugged 
> include operating systems, networking, SE, system's design, etc.

Indeed. At the same university, I taught the Distributed Operating
Systems masters level course. We used the Tannebaum / van Steen
text. The longest single chapter in the book was on security,
so the topic naturally fit in. (However, I know of other instructors
before me who simply skipped that chapter, thinking it wasn't as
important as the rest of the stuff.)

> I'd be interested to hear what people think of the two 
> approaches (separate security courses vs. spreading security
> all over the curricula).

I don't see it as "either / or", but rather "both / and". I think that
we sprinkle discussion of security, where appropriate, throughout
core courses (OS, networking, software design, etc.) and also have a
course or two at an upper (junior/senior) level. In that way, I
see it very similar to the way that we approach software design.
Generally there's a specific course or two on design, but we (hopefully)
teach it in bits and pieces at the beginning programming levels as well.
---
Kevin W. Wall           Qwest Information Technology, Inc.
[EMAIL PROTECTED]       Phone: 614.215.4788
"The difference between common-sense and paranoia is that common-sense
 is thinking everyone is out to get you. That's normal -- they are.
 Paranoia is thinking that they're conspiring."    -- J. Kegler


Reply via email to