C

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!

CS Table: Back to Basics (2014-12-05)

This week in Computer Science Table, we're exploring a different side of things. In particular, we are considering some under the hood issues in common programming areas, such as strings, memory allocation, and databases. Our reading is

Spolsky, Joel (2001, December 11). Back to Basics. Joel on Software. Web page at http://www.joelonsoftware.com/articles/fog0000000319.html.

Some questions to think about for this meeting: How are strings represented internally in your favorite programming languages? If you had a choice of how to represent strings internally, what would you do? Are all versions of malloc created equal? What flaws do you see in Spolsky's comments?

Computer science table is a weekly meeting of Grinnell College community members (students, faculty, staff, etc.) interested in discussing topics related to computing and computer science. CS Table meets Fridays from 12:10-12:50 in the Day PDR (JRC 224A). Contact Sam Rebelsky rebelsky@grinnell.edu> for the weekly reading. Students on meal plans, faculty, and staff are expected to cover the cost of their meals. Visitors to the College and students not on meal plans can charge their meals to the department.

Thursday Extra: A C-based introductory course using robots

On Thursday, September 15, David Cowden, April O'Neill, Erik Opavsky, and Dilan Ustek will give a talk in the "Thursday Extra" series:

Using robots in introductory computer science classes has recently become a popular method of increasing student interest in computer science. With faculty member, Henry M. Walker, we developed a new curriculum for CSC 161, Imperative Problem Solving and Data Structures, based upon Scribbler 2 robots with standard C. Come hear about
  • creation of a modular course structure
  • focus on imperative problem solving and C
  • wrapping of commands from C++ to C
  • inclusion of innovative pedagogy
  • sharing of software with the international community

Refreshments will be served at 4:15 p.m. in the Computer Science Commons (Noyce 3817). The group's talk, "A C-based introductory course using robots" will follow at 4:30 p.m. in Noyce 3821. Everyone is welcome to attend.

Thursday Extra: "Programming robots"

On Thursday, February 24, Henry Walker will discuss present some of his preliminary work on integrating the programming of robots with the curriculum of CSC 161 (“Imperative problem solving and data structures”):

Introductory computer science courses around the country have utilized robots for a number of years. In recent years, for some courses, robot control has taken advantage of Graphical User Interfaces (GUIs); some other courses provide students with a programming environment designed for beginners. Although these experiences have often been motivating and interesting for students, the use of robots remains a challenge within courses that focus upon imperative problem solving (e.g., with the C programming language), such as Grinnell's CSC 161.

Drawing upon this background, Mr. Walker has devoted part of his current sabbatical leave to explore the use of simple robots, with the long-term goal of possibly using robots in CSC 161. This talk presents a status report on this work. Discussion will include hardware options and capabilities, programming options, available documentation, examples of working programs, challenges, and next steps.

Refreshments will be served at 4:15 p.m. in the Computer Science Commons (Noyce 3817). Mr. Walker's talk, “Programming robots: a status report,” will follow at 4:30 p.m. in Noyce 3821. Everyone is welcome to attend!

Students interested in the topics of this talk are encouraged to contact Mr. Walker about the possibility of working in the field for Summer 2011 and [maybe] beyond.

Computer Science Table, September 18: Under the Hood

This week in Computer Science Table, we're exploring a different side of things. In particular, we are considering some under the hood issues in some common programming areas, such as strings, memory allocation, and databases.

Spolsky, Joel (2001, December 11). Back to Basics. Joel on Software. Web page at http://www.joelonsoftware.com/articles/fog0000000319.html.

Some questions to think about for this meeting: How are strings represented internally in your favorite programming languages? If you had a choice of how to represent strings internally, what would you do? Are all versions of malloc created equivalent? What flaws do you see in Spolsky's comments?

CS Table meets at noon on Fridays in JRC 224A. All are welcome. Computer science students and faculty are particularly encouraged to attend.

Introductory courses

Multi-paradigm Approach for Introductory Courses

Computing has become widespread in today's society, largely because it helps people solve problems. However, different types of problems require fundamentally different approaches for problem solving. Computer science recognizes at least four problem-solving approaches as being fundamental to work in the discipline. Each approach involves a distinct way of thinking, and each is supported by a range of computer languages.

Grinnell's computer science curriculum explores several of these paradigms in the beginning courses, each of which has been named a "course exemplar" by the international professional computing societies.

  • CSC 151, Functional Problem Solving
    • emphasizes functional problem solving
    • supported by the Scheme programming language (a dialect of LISP, a language widely used for artificial intelligence, graphical manipulations, and other applications)
    • current application areas: data science, digital humanities
    • past application area: image processing / media scripting
151 image, Kent, Re-Scherer 151 image, Tsui, Miller 161 image, Mai Ha Vu 151 image, Philipp, Reischmann, Cantley
CSC 151 image by James Kent and Chris Re-Scherer, Fall 2012 CSC 151 image by Amy Tsui and Solomon Miller, Spring 2010 CSC 161 image by Mai Ha Vu, Fall 2012 CSC 151 image by Grace Philipp, Elizabeth Reischmann, and Lauren Cantley, Fall 2009
  • CSC 161, Imperative Problem Solving and Data Structures
    • studies concepts tied to the architecture of computers, compilers, and operating systems within the context of the imperative problem-solving paradigm
    • supported by the C (a programming language widely used in scientific applications and engineering)
    • application area: control of robots
Scribbler 2 robot
(front view)
Scribbler 2 Front Scribbler 2 Back Scribbler 2 robot
(rear view)
  • CSC 207, Algorithms and Object-Oriented Design
    • explores object-oriented problem solving
    • supported by the Java programming language (a language widely use for large-scale applications and systems)
    • application area: software development for the common good

Student-faculty interaction during lab exercises

Students with considerable background should consult the computer science faculty regarding placement.

  • Students with strong scores on the AP CS A examination or the IB CS examination receive credit for their prior work, but placement requires discussion of their specific background.
  • Most incoming students find functional problem solving to be quite new and different, so they begin with CSC 151 (where no computing background is assumed).
  • Students with substantial experience in imperative problem solving or object-oriented problem solving (e.g., students with AP CS A or IB CS background) may be able to skip CSC 161 or CSC 207, depending upon the extent of their background.

Later courses build on this foundation to provide depth in each of these problem-solving paradigms and programming languages.


Syndicate content