Thursday Extra: "Beyond the PDP-11"

On Thursday, April 30, Brooks Davis (Senior Software Engineer, SRI International) will describe a proposed processor architecture to support memory-safe programming:

The C programming language (combined with C++) is used to implement all important modern operating systems and the runtimes of most higher level programming languages. Despite the ease of implementing serious security bugs in C, billions of lines of software is written in it and our daily lives depend on much of that software. It is surprising that all popular CPU architectures provide memory safety mechanisms substantially identical to those on the PDP-11 on which C was written in 1972! Our research aims to change that.

In this talk I provide an introduction to the conventional memory model of C and cover some of the problems this model causes. I will then discuss our solution, the CHERI CPU and our modified C compiler and how we took it from an early prototype to something that can bring memory safety to virtually all C code without code changes.

At 4:15 p.m., refreshments will be served in the Computer Science Commons. The talk, “Beyond the PDP-11: Architectural support for a memory-safe C abstract machine,” will begin at 4:30 p.m. in Noyce 3821. Everyone is welcome to attend!

Thursday Extra: "Building a platform for modern systems research"

On Thursday, April 18, Brooks Davis will discuss the architecture of new computers designed for research into computer systems and networks:

A team of more than thirty researchers from SRI International and the University of Cambridge have spent the last two years developing a pair of clean-slate processor designs and a supporting set of operating systems and programing language extensions. The primary goal of this work is increasing our ability to compartmentalize important -- but risky -- applications such as web browsers at a much finer scale than currently possible. Secondary goals include modernizing the process of hardware design, raising the bar for CPU research, and developing a platform for future work. This talk will discuss our goals in detail and our progress toward building a research platform to support them.

Refreshments will be served at 4:15 p.m. in the Computer Science Commons (Noyce 3817). The talk, “Building a platform for modern systems research,” will follow at 4:30 p.m. in Noyce 3821. Everyone is welcome to attend!

Upper-division courses and the computer science major

Collaborative student problem solving

Core Courses, Electives, and the Computer Science Major

Grinnell's introductory courses introduce fundamental views of problem solving and different supporting programming languages. Upper-level courses include several core courses and many elective courses. The major provides some flexibility to allow students to follow their personal interests and career goals.

Requirements for the CS Major

The Computer Science Major balances requirements in foundational areas with some flexibility.

  • Algorithms and theory
    • 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)
  • "Systems" courses: (one required, both strongly recommended)
    • CSC 211, Computer Organization and Architecture (hardware basics)
    • CSC 213, Operating Systems and Parallel Algorithms (fundamentals of parallel computation)
  • Software development
    • CSC 324, Software Design and Development (software lifecycle, agile development methods, professional tools, and software design principles with application to a large-scale project for a local organization/client)
  • Electives (4 credits)
  • Supporting mathematics
    • CSC 208/MAT 208 Discrete Structures or MAT 218 Combinatorics (foundational mathematics used throughout computing)
    • Math elective to support specific student interests and goals

Students working on circuits lab for Computer Organization and Architecture

Computer Science Major to meet international curricular guidelines

Grinnell's regular Computer Science Major requires 32 credits of computer science and 8 credits in supporting mathematics. This level of background supports many student interests and career goals. However, students interested in careers in computing are advised that the following courses should be taken either as Electives for the Computer Science Major or as additional courses:

  • CSC 211 - Computer Organization and Architecture 4 credits
  • CSC 213 - Operating Systems and Parallel Algorithms 4 credits
  • CSC 214 - Computer and Network Security 2 credits
  • CSC 216 - Computer Networks 2 credits
  • CSC 312 - Programming Language Implementation 2 credits

With these selections, students cover the full range of recommendations recommended by Association for Computer Machinery (ACM), the Computer Society of the Institute of Electrical and Electronics Engineers (IEEE-CS). This extended major includes 32 credits of computer science and 8 credits in supporting mathematics and is identified by the professional societies as a curricular exemplar.

Electives, Mentored Advanced Projects (MAPs), Special Topics

Students discussing their project work

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 vision, computational linguistics, and evolutionary algorithms, and data visualization.

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

Syndicate content