compilers

Thursday Extra: "Dynamic code generation and what it takes to get there"

On Thursday, May 3, Isaiah Sarju 2013 will discuss the nature, history, and theory of security vulnerabilities associated with dynamic code generation:

More specifically, the talk will deal with the underlying hacking techniques and security principles which have led to research into dynamic code generation: the history of memory vulnerabilities, the security mechanisms which are used to protect against these attacks, and the state of the art of bypassing these protections.

Refreshments will be served at 4:15 p.m. in the Computer Science Commons (Noyce 3817). The talk, Dynamic code generation and what it takes to get there, will follow at 4:30 p.m. in Noyce 3821. Everyone is welcome to attend!

Upper-division courses

Introductory Course CSC 151

Core Courses and Electives

Grinnell's introductory courses introduce fundamental views of problem solving and different supporting programming languages. Upper-level courses fall into two main categories:

Core Courses: Requirements for the CS Major

Introductory Course CSC 151

Core courses address fundamental topics that are recommended by national curricular guidelines. The Computer Science Major incorporates these core topics into mandated courses:


  • CSC 301, Analysis of Algorithms (fundamental problem-solving techniques, corresponding data structures, and analysis of efficiency)
  • CSC 341, Automata, Formal Languages, and Computational Complexity (the theory of computation— connecting with perspectives of the liberal arts)
  • "under-the-hood" courses:
    • CSC 211, Computer Organization and Architecture (hardware basics)
    • CSC 213, Operating Systems and Parallel Algorithms (fundamentals of parallel computation)
  • upper-level, language-oriented courses:
    • CSC 302, Programming Language Concepts (design alternatives and implementation possibilities)
    • CSC 362, Compilers (utilization of langauge theory to translate high-level programs to machine-level code)
  • software development methodology and team-based software development projects:
    • CSC 323, Software Design (development of large-scale programs based on object-oriented problem solving)
    • CSC 325, Databases and Web Application Design (use of databases and scripting languages in developing Web-based systems)

To address pragmatic issues of scheduling (e.g., students considering off-campus study), the major requires only one of CSC 211 or 213, one of 302 or 362, and one of 323 or 325. Both 211 and 213 are strongly recommended, and together these courses address content areas of the national curricular guidelines.

Electives, Mentored Advanced Projects (MAPs), Special Topics

Introductory Course CSC 151

The Computer Science Department offers a range of electives to extend student backgrounds beyond the undergraduate core. In addition to regularly scheduled courses, special topics courses address particular interests of both students and faculty.

Some recently-offered electives have included artificial intelligence, computer networks, computer graphics, computational linguistics, and human-computer interfaces.

Complementing regular courses, students work with faculty on a wide range of guided reading courses, independent projects, and mentored advanced projects.


Syndicate content