CSC302 2011S Programming Languages
[Skip to Body]
Admin:
[Front Door]
[Schedule]
[Handouts]
[Honesty]
[Piazzza]
Current:
[Current Outline]
[Current EBoard]
[Current Assignment]
[Current Lab]
[Current Reading]
Groupings:
[Assignments]
[EBoards]
[Examples]
[Exams]
[Handouts]
[Labs]
[Outlines]
[Readings]
[Reference]
Languages:
[Clojure]
[Erlang]
[Haskell]
[Io]
[Prolog (GNU)]
[Ruby]
[Scala]
Misc:
[SamR]
[CSC302 2007S]
[7L7W]
Assigned: Saturday, 26 February 2011
Due: 11:00 p.m., Saturday, 5 March 2011
This assignment is also available in PDF.
Summary: In this assignment, you will explore parallelism in Erlang.
Purposes: To give you more experience with Erlang. To give you more experience with parallel programming.
Expected Time: Three to four hours.
Collaboration: I would prefer that you work on this assignment in groups of two or three. You may also work on this assignment alone or in groups of up to size four. You may consult with anyone you wish on this assignment (including other classmates), provided you cite your consultants.
Submitting: Upload a tarball to Pioneerweb.
Warning: So that this assignment is a learning experience for everyone, I may spend class time publicly critiquing your work.
Implement the following functions that each use K
processes (where K is a parameter to the function). Your
goal is to minimize the total amount of work on the processor that does
the most work. (Hence, it's okay to do more work, as long as the max
is low.)
largest (List, Comparator, K) - find the largest
value in List.
sort (List, Comparator, K) - sort the list.
fold (List, BinOp, K) - fold an operator into a list.
You can assume that the operator associates, so that
(a op b) op c is the same as a op (b op c).
You may substitute a tuple for a list in any of the functions.
I will look at the standard C
criteria: Is your code
correct? Is your code concise? (This
second attribute is particularly appropriate in Ruby.) Is your code
appropriately commented? Have you used any particularly
clever techniques. How comely is your
code?
Create a directory for this assignment of the form hw06.names. Within that directory, create subdirectories
for each part of the assignment (e.g., part0,
part1). Each subdirectory should contain:
Make a gzipped tarball of the assignment directory. (If you don't know how to do that, let me know.) Upload it via the Assignment 6 link on Pioneerweb.
Saturday, 26 February 2011 [Samuel A. Rebelsky]
Monday, 28 February 2011 [Samuel A. Rebelsky]
Wednesday, 2 March 2011 [Samuel A. Rebelsky, with assistance from CSC302 students]
http://www.cs.grinnell.edu/~rebelsky/Courses/CSC302/2011S/Assignments/assignment.06.html.
[Skip to Body]
Admin:
[Front Door]
[Schedule]
[Handouts]
[Honesty]
[Piazzza]
Current:
[Current Outline]
[Current EBoard]
[Current Assignment]
[Current Lab]
[Current Reading]
Groupings:
[Assignments]
[EBoards]
[Examples]
[Exams]
[Handouts]
[Labs]
[Outlines]
[Readings]
[Reference]
Languages:
[Clojure]
[Erlang]
[Haskell]
[Io]
[Prolog (GNU)]
[Ruby]
[Scala]
Misc:
[SamR]
[CSC302 2007S]
[7L7W]
Disclaimer:
I usually create these pages on the fly
, which means that I rarely
proofread them and they may contain bad grammar and incorrect details.
It also means that I tend to update them regularly (see the history for
more details). Feel free to contact me with any suggestions for changes.
This document was generated by
Siteweaver on Wed Mar 2 09:05:06 2011.
The source to the document was last modified on Wed Mar 2 09:05:04 2011.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CSC302/2011S/Assignments/assignment.06.html.
You may wish to
validate this document's HTML
;
;