CS Table

Computer Science Table: "The Reactive Manifesto"

At this week's Computer Science Table (at noon on Friday, December 13, in Rosenfield 224A), we will discuss a recent statement from a group of programmers about desired features of modern applications. The reading is:

From the statement:

A new architecture has evolved to let developers conceptualize and build applications that satisfy today's demands. We call these Reactive Applications. This architecture allows developers to build systems that are event-driven, scalable, resilient and responsive: delivering highly responsive user experiences with a real-time feel, backed by a scalable and resilient application stack, ready to be deployed on multicore and cloud computing architectures. The Reactive Manifesto describes these critical traits which are needed for going reactive.

Computer Science Table: "Beyond efficiency"

At this week's Computer Science Table (at noon on Friday, December 6, in Rosenfield 224A), we will discuss issues, other than efficiency, that programmers should take into account when implementing algorithms. The reading is:

Computer Science Table is an open weekly meeting of Grinnell College community members (students, faculty, staff, etc.) interested in discussing topics related to computing and computer science.

CS Table: the Network Time Protocol

At this week's Computer Science Table (at noon on Friday, November 8, in Rosenfield 224A), we will discuss the Network Time Protocol. The reading is:

  • Mills, D. L. Internet time synchronization: the network time protocol. IEEE Transactions on Communications 39, no. 10, pp. 1482–1493.

The Network Time Protocol (NTP) uses a symmetric architecture in which a distributed subnet of time servers, operating in a self-organizing, hierarchical configuration, synchronizes local clocks within the subnet and to national time standards via wire, radio, or calibrated atomic clock. The servers can also redistribute time information within a network via local routing algorithms and time daemons. Performance data show that the NTP synchronization system ensures timekeeping accuracy throughout most portions of the Internet to within a few milliseconds, even in cases of failure or disruption of clocks, time servers, or networks.

Computer Science Table: "Are we free to code the law?"

At this week's Computer Science Table (at noon on Friday, October 4, in Rosenfield 224A), we will consider attempts to write code that reflects the law (e.g., providing legal advice).

Lauritsen, Marc. “Are we free to code the law? ” Communications of the ACM 56 (2013), issue 8, 60–66.

The emergence of interactive online services for legal self-helpers has triggered suppression efforts by the legal profession, as well as by state government officials in the U.S. While couched in terms of consumer protection, and at least partly motivated by such concerns, these efforts are also seen by some as blatant turf management by a profession anxious to avoid further erosion of its monopoly over legal advice and representation.

Often neglected in these discussions is whether restricting the distribution of software is within the legitimate scope of government action. No one would contend that attempts to suppress books, pamphlets, and speeches on how the legal system works and what forms one needs to interact with it would pass constitutional muster. Is providing software that helps people meet their legal needs an activity the state can prohibit under the U.S. Constitution?

Here, I explore ways software-based legal-assistance systems can be understood for purposes of public policy and constitutional analysis. The focus is on circumstances in the U.S., but many other countries face the same issues.

Computer Science Table: "The story of Mel"

For this week's Computer Science Table (at noon on Friday, September 27, in Rosenfield 224A), the reading is a classic short story about a “real programmer,” providing some historical perspective on the practice of programming:

Nather, Ed. “The story of Mel.” Usenet, 1983.

Computer Science Table: "Pair programming"

For this week's Computer Science Table (at noon on Friday, September 20, in Rosenfield 224A), the reading is a recent work on pair programming:

Wray, Stuart. “How pair programming really works.” IEEE computer 27 (2010), 50–55.

Come and learn more about why we teach our classes the way we do (and how to do better when working in a pair)!

Things Every CS Major Should Read

The page is currently in very rough form.

This page provides a list of papers that department faculty think our students would benefit from reading. It will evolve over time.

Anonymous. n.d. The story of Mel, a real programmer.

A funny historical piece. The story of Mel should give you a sense of a different era of programming, help you think differently about the relationships between code and data, and remind you of moral obligations of programmers.

John Backus. 1978. Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs. Commun. ACM 21, 8 (August 1978), 613-641. DOI=10.1145/359576.359579 http://doi.acm.org/10.1145/359576.359579

We've seen an evolution of approaches to program design. Early programs were unstructured. In the 70's and 80's, there was a move toward structured programming. In the 80's, 90's, and 00's, object-oriented programming was the primary mechanism. But in the 10's we're seeing increasing understanding of why a functional approach may be better. Backus, who invented Fortran, realized the power of functional programming decades ago. The first parts of this article provide a nice summary of this power.

Jon Bentley. 1983. Programming pearls: Writing correct programs. Commun. ACM 26, 12 (December 1983), 1040-1045. DOI=10.1145/358476.358484 http://doi.acm.org/10.1145/358476.358484

A very interesting discussion of a famous and often incorrectly implemented algorithm: binary search. Bentley provides an excellent example of the design of a unit test (although he does not call it such), then suggests that there are more formal techniques beyond unit testing likely to provide us with more confidence in our results.

Fred Brooks. The Mythical Man-Month.

A classic book on software engineering. Read it to better understand ways to think about group projects (and managing group projects).

Paul Graham. 2002. The roots of Lisp. http://www.paulgraham.com/rootsoflisp.html

Paul Graham. 2002. What made Lisp different. http://www.paulgraham.com/diff.html

Grinnell starts our curriculum with Scheme, a dialect of Lisp. And we return to Lisp in many classes. These articles by Graham suggest reasons that Lisp remains a powerful programming model.

Ken Thompson. 1984. Reflections on trusting trust. Commun. ACM 27, 8 (August 1984), 761-763. DOI=10.1145/358198.358210 http://doi.acm.org/10.1145/358198.358210

Thompson's Turing Award speech on reading and trusting code.

Stuart Wray. 2010. How pair programming really works. IEEE Computer. http://www.computer.org/cms/Computer.org/ComputingNow/homepage/2010/0110/W_SW_PairProgramming.pdf

There are a variety of good articles on pair programming. This is a nice short one.

CS Table: Trusting Trust

On Friday, 13 September 2013, the readings for CS Table will be two papers on trust.

The first is a classic paper, written as a Turing Award Speech

Ken Thompson. 1984. Reflections on trusting trust. Commun. ACM 27, 8 (August 1984), 761-763. DOI=10.1145/358198.358210 http://doi.acm.org/10.1145/358198.358210

The second is a recent article from The New York Times

Nicole Perlroth, Jeff Larson, and Scott Shane. September 5, 2013. N.S.A. Able to Foil Basic Safeguards of Privacy on Web. The New York Times. http://www.nytimes.com/2013/09/06/us/nsa-foils-much-internet-encryption.html

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 at noon in the Day PDR. Contact Sam Rebelsky (rebelsky@grinnell.edu) for the weekly reading. Students on meal plans, faculty, and staff are expected to pay the cost of their meals. Students not on meal plans can charge their meals to the department.

Computer Science Table: "Turing on artificial intelligence"

For this week's Computer Science Table (at noon on Friday, September 6, in Rosenfield 224A), the reading is a classic paper on artificial intelligence:

Turing, A. M. (1950). Computing Machinery and Intelligence. Mind 59: 433-460.
http://www.csee.umbc.edu/courses/471/papers/turing.pdf

Come learn the real scoop on the “Turing test”!

Computer Science Table: "What I did this summer"

Welcome back!

Our first CS Table of the year will be Friday, 30 August 2013 in Rosenfield 224A. Our topic will be “What I did this summer and will give folks a chance to report on what they've done while away from Grinnell (or at least away from classes) and what they hope to do in the coming year. It will also be an opportunity to discuss potential topics and readings for the year in CS Table.

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 at noon. Contact Sam Rebelsky for the weekly reading. Students on meal plans, faculty, and staff are expected to pay the cost of their meals. Students not on meal plans can charge their meals to the department.

Syndicate content