<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://132.161.132.157/drupal6"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Computer Science - functional programming</title>
 <link>http://132.161.132.157/drupal6/taxonomy/term/447/0</link>
 <description></description>
 <language>en</language>
<item>
 <title>Computer Science Table (Friday, April 11, 2014): Lambda expressions in Java 8</title>
 <link>http://132.161.132.157/drupal6/node/691</link>
 <description>&lt;p&gt;
As you may have heard, one of the new features of Java 8 is the introduction of anonymous functions (which everyone calls &amp;ldquo;lambda expressions,&amp;rdquo; even though there&#039;s no lambda in the syntax).  This Friday at CS Table, we will explore Java 8&#039;s anonymous functions.  Here are a few readings you might read or skim in advance of the discussion:
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;
Horstmann, Cay S.  &lt;a href=&quot;http://www.drdobbs.com/jvm/lambda-expressions-in-java-8/240166764&quot;&gt;&amp;ldquo;Lambda expressions in Java 8.&amp;rdquo;&lt;/a&gt;  &lt;i&gt;Dr Dobb&#039;s journal&lt;/i&gt;,  March 25, 2014.
&lt;/p&gt;

&lt;p&gt;
Weiss, Tal.  &lt;a
href=&quot;http://www.takipiblog.com/2014/03/25/the-dark-side-of-lambda-expressions-in-java-8/&quot;&gt;&amp;ldquo;The dark side of lambda expressions in Java 8.&amp;rdquo;&lt;a&gt;  &lt;i&gt;The Takipi blog&lt;/i&gt;, March 25, 2014.
&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;
You may also want to explore the formal tutorial on lambdas:
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;
Oracle.  &lt;a href=&quot;http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html&quot;&gt;&amp;ldquo;Lambda expressions.&amp;rdquo;&lt;/a&gt;   &lt;i&gt;The Java tutorials&lt;/i&gt;, 2014.
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;
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.
&lt;/p&gt;
</description>
 <comments>http://132.161.132.157/drupal6/node/691#comments</comments>
 <category domain="http://132.161.132.157/drupal6/taxonomy/term/41">CS Table</category>
 <category domain="http://132.161.132.157/drupal6/taxonomy/term/447">functional programming</category>
 <category domain="http://132.161.132.157/drupal6/taxonomy/term/16">Java</category>
 <category domain="http://132.161.132.157/drupal6/taxonomy/term/510">lambda-expressions</category>
 <pubDate>Thu, 10 Apr 2014 16:27:41 +0000</pubDate>
 <dc:creator>stone</dc:creator>
 <guid isPermaLink="false">691 at http://132.161.132.157/drupal6</guid>
</item>
<item>
 <title>CSC 151 - Functional Problem Solving</title>
 <link>http://132.161.132.157/drupal6/courses/csc151</link>
 <description>&lt;ul class=&quot;page-contents&quot; style=&quot;border-top: solid 1px; border-bottom: solid 1px;&quot;&gt;
&lt;li style=&quot;display:inline&quot;&gt;&lt;a href=&quot;#ov&quot;&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;display:inline&quot;&gt;&lt;a href=&quot;#cd&quot;&gt;Catalog&amp;nbsp;Description&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;display:inline&quot;&gt;&lt;a href=&quot;#sd&quot;&gt;Syllabus&amp;nbsp;Description&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;display:inline&quot;&gt;&lt;a href=&quot;#cfp&quot;&gt;Class&amp;nbsp;Format&amp;nbsp;and&amp;nbsp;Pedagogy&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;display:inline&quot;&gt;&lt;a href=&quot;#co&quot;&gt;Current&amp;nbsp;and&amp;nbsp;Past&amp;nbsp;Offerings&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;display:inline&quot;&gt;&lt;a href=&quot;#slo&quot;&gt;Student&amp;nbsp;Learning&amp;nbsp;Outcomes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;i&gt;CSC 151, CSC 161, and CSC 207 &amp;mdash; the three courses in Grinnell&#039;s multi-paradigm, introductory computer science sequence &amp;mdash; have been recognized as &quot;exemplar courses&quot; by the ACM/IEEE-CS Task Force on Computing Curricula 2013.&lt;/i&gt;
&lt;/p&gt;


&lt;h3&gt;&lt;a name=&quot;ov&quot;&gt;&lt;/a&gt;Overview&lt;/h3&gt;
&lt;p&gt;
CSC 151 is the first course in our multi-paradigm introductory sequence.  Students develop basic facility with designing, implementing, and analyzing algorithms using a functional programming language (typically a variant of Scheme).  For the past two decades we have been teaching our first class using a form of the flipped classroom - students read materials in advance of class and then spend class time working with a partner on a set of problems, with the instructor and class mentor providing advice and asking questions.
&lt;/p&gt;

&lt;p&gt;
Starting in 2007, CSC 151 has focused on image computation as its domain for problem solving.  That is, students write programs that make images using one of a variety of image-making paradigms, some imperative, some pure functional, some object-oriented.
&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;cd&quot;&gt;&lt;/a&gt;Catalog Description&lt;/h3&gt;
&lt;p&gt;
A lab-based introduction to basic ideas of computer science, including recursion, abstraction, scope and binding, modularity, the design and analysis of algorithms, and the fundamentals of programming in a high-level, functional language. Variable topic course. Includes formal laboratory work.
&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;co&quot;&gt;&lt;/a&gt;Current and Past Course Offerings&lt;/h3&gt;

&lt;p&gt;
The department maintains a page of current and past course offerings.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/drupal6/node/31/&quot;&gt;Full listing of current and past computer science courses&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/drupal6/node/31/#csc-151&quot;&gt;Listing of current and past offerings of CSC 151&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;a name=&quot;slo&quot;&gt;&lt;/a&gt;Student Learning Outcomes&lt;/h3&gt;

&lt;p&gt;
&lt;a href=&quot;/CS2013-recommendations&quot;&gt;
&lt;b&gt;Computer Science Curricula 2013 (CS2013)&lt;/b&gt;, national curricular recommendations from the ACM/IEEE-CS professional societies, identify an extensive list of learning outcomes for undergraduate computer science programs.&lt;/a&gt;
Upon completing CSC 151, students should achieve the following learning outcomes with the specified level of mastery:
&lt;/p&gt;



&lt;table width=&quot;100%&quot; border=&quot;0&quot; align=&quot;center&quot; cellpadding=&quot;6px&quot; cellspacing=0 valign=&quot;top&quot;&gt;
  &lt;tr class=&quot;even&quot;&gt;
  &lt;td&gt;&lt;b&gt;Knowledge Unit&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;b&gt;Learning Outcome with [&lt;a href=&quot;/CS2013-recommendations#outcomes&quot;&gt;Level of Mastery&lt;/a&gt;]&lt;/b&gt;&lt;/td&gt;
  &lt;/tr&gt;

  &lt;tr class=&quot;odd&quot;&gt;
    &lt;td align=&quot;left&quot; valign=&quot;top&quot;&gt;&lt;b&gt;Algorithmic Strategies&lt;/b&gt;&lt;/td&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;ul&gt;
        &lt;li&gt;Have facility mapping pseudocode to implementation, implementing examples of algorithmic strategies from scratch, and applying them to specific problems. [Familiarity]&lt;/li&gt;
        &lt;li&gt;Use a divide-and-conquer algorithm to solve an appropriate problem. [Usage]&lt;/li&gt;
	&lt;li&gt;Use recursive backtracking to solve a problem such as navigating a maze [Usage]&lt;/li&gt;
      &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;

 &lt;tr class=&quot;even&quot;&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Fundamentals&lt;/b&gt; &lt;/td&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;ul&gt;
        &lt;li&gt;Explain the concept of modeling and the use of abstraction that allows the use of a machine to solve a problem. [Familiarity]&lt;/li&gt;
      &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;


  &lt;tr class=&quot;odd&quot;&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Processing&lt;/b&gt; &lt;/td&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;ul&gt;
        &lt;li&gt;Analyze simple problem statements to identify relevant information and select appropriate processing to solve the problem. [Assessment]&lt;/li&gt;
        &lt;li&gt;Identify the issues impacting correctness and efficiency of a computation. [Familiarity]&lt;/li&gt;
      &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;

 
 &lt;tr class=&quot;even&quot;&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Basics of Counting&lt;/b&gt; &lt;/td&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;ul&gt;
        &lt;li&gt;Perform computations involving modular arithmetic.  [Usage]&lt;/li&gt;
      &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;


 &lt;tr class=&quot;odd&quot;&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Fundamental Concepts&lt;/b&gt; &lt;/td&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;ul&gt;
        &lt;li&gt;Identify common uses of computer graphics. [Familiarity]&lt;/li&gt;
	&lt;li&gt;Explain in general terms how analog signals can be reasonably represented by discrete samples, for example, how images can be represented by pixels. [Familiarity]&lt;/li&gt;
	&lt;li&gt;Describe color models and their use in graphics display devices. [Familiarity]
	&lt;/li&gt;&lt;li&gt;Describe the tradeoffs between storing information vs storing enough information to reproduce the information, as in the difference between vector and raster rendering. [Usage]&lt;/li&gt;
      &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;


 &lt;tr class=&quot;even&quot;&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Basics Rendering&lt;/b&gt; &lt;/td&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;ul&gt;
        &lt;li&gt;Model simple graphics images. [Usage]&lt;/li&gt;
	&lt;li&gt;Implement simple procedures that perform transformation and clipping operations on simple 2-dimensional images. [Usage]&lt;/li&gt;
      &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;



  &lt;tr class=&quot;odd&quot;&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Defensive Programming&lt;/b&gt; &lt;/td&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;ul&gt;
        &lt;li&gt;Explain why you might choose to develop a program in a type-safe language like Java, in contrast to an unsafe programming language like C/C++ [Some Familiarity]&lt;/li&gt;
	&lt;li&gt;Demonstrate the identification and graceful handling of error conditions. [Usage]&lt;/li&gt;
      &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;


  &lt;tr class=&quot;even&quot;&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Functional Programming&lt;/b&gt; &lt;/td&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;ul&gt;
        &lt;li&gt;Compare and contrast (1) the procedural/functional approach—defining a function for each operation with the function body providing a case for each data variant, and (2) the object-oriented approach—defining a class for each data variant with the class definition providing a method for each operation.  Understand both as defining a matrix of operations and variants. [Assessment]&lt;/li&gt;
	&lt;li&gt;Write basic algorithms that avoid assigning to mutable state or considering reference equality. [Usage]&lt;/li&gt;
	&lt;li&gt;Write useful functions that take and return other functions. [Usage]&lt;/li&gt;
	&lt;li&gt;Use multiple encapsulation mechanisms, such as function closures, object-oriented interfaces, and support for abstract datatypes, in multiple programming languages. [Usage]&lt;/li&gt;
	&lt;li&gt;Define and use iterators and other operations on aggregates using idioms most natural in multiple programming languages, including taking functions as arguments. [Usage]&lt;/li&gt;
      &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;


  &lt;tr class=&quot;odd&quot;&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Algorithms and Design&lt;/b&gt; &lt;/td&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;ul&gt;
	&lt;li&gt;Discuss the importance of algorithms in the problem-solving process. [Familiarity]&lt;/li&gt;
	&lt;li&gt;Discuss how a problem may be solved by multiple algorithms, each with different properties.[Familiarity]&lt;/li&gt;
	&lt;li&gt;Create algorithms for solving simple problems. [Usage]&lt;/li&gt;
	&lt;li&gt;Use a programming language to implement, test, and debug algorithms for solving simple problems. [Usage]&lt;/li&gt;
	&lt;li&gt;Implement, test, and debug simple recursive functions and procedures.[Usage]&lt;/li&gt;
	&lt;li&gt;Apply the techniques of decomposition to break a program into smaller pieces. [Usage]&lt;/li&gt;
      &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;


 &lt;tr class=&quot;even&quot;&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Fundamental Programming Concepts&lt;/b&gt; &lt;/td&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;ul&gt;
	&lt;li&gt;Analyze and explain the behavior of simple programs involving the fundamental programming constructs covered by this unit. [Assessment]&lt;/li&gt; 
	&lt;li&gt;Identify and describe uses of primitive data types. [Familiarity]&lt;/li&gt; 
	&lt;li&gt;Write programs that use primitive data types. [Usage]&lt;/li&gt;
	&lt;li&gt;Modify and expand short programs that use standard conditional and iterative control structures and functions. [Usage]&lt;/li&gt;
	&lt;li&gt;Describe the concept of recursion and give examples of its use. [Familiarity]&lt;/li&gt;
	&lt;li&gt;Identify the base case and the general case of a recursively-defined problem. [Assessment]&lt;/li&gt;
      &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;


 &lt;tr class=&quot;odd&quot;&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Fundamental Data Structures&lt;/b&gt; &lt;/td&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;ul&gt;
	&lt;li&gt;Discuss the appropriate use of built-in data structures. [Familiarity]&lt;/li&gt;
	&lt;li&gt;Describe common applications for each data structure in the topic list. [Familiarity]&lt;/li&gt;
	&lt;li&gt;Write programs that use each of the following data structures: arrays, strings, linked lists, stacks, queues, sets, and maps. [Usage - Maps]&lt;/li&gt;
	&lt;li&gt;Compare alternative implementations of data structures with respect to performance. [Assessment]&lt;/li&gt;
	&lt;li&gt;Choose the appropriate data structure for modeling a given problem. [Assessment]&lt;/li&gt;
      &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;


  &lt;tr class=&quot;even&quot;&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Development Methods&lt;/b&gt;&lt;/td&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;ul&gt;
        &lt;li&gt;Trace the execution of a variety of code segments and write summaries of their computations. [Assessment]&lt;/li&gt;
        &lt;li&gt;Explain why the creation of correct program components is important in the production of high-quality software. [Familiarity]&lt;/li&gt;
        &lt;li&gt;Refactor a program by identifying opportunities to apply procedural abstraction.  [Usage]&lt;/li&gt;
        &lt;li&gt;Apply a variety of strategies to the testing and debugging of simple programs. [Usage]&lt;/li&gt;
        &lt;li&gt;Construct and debug programs using the standard libraries available with a chosen programming language. [Usage]&lt;/li&gt;
        &lt;li&gt;Apply consistent documentation and program style standards that contribute to the readability and maintainability of software. [Familiarity]&lt;/li&gt;
      &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;


  &lt;tr class=&quot;odd&quot;&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;b&gt;Social Context&lt;/b&gt; &lt;/td&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;ul&gt;
        &lt;li&gt;Describe positive and negative ways in which computer technology (networks, mobile computing, cloud computing) alters modes of social interaction at the personal level. [Familiarity]&lt;/li&gt;
      &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;

&lt;/table&gt;

</description>
 <category domain="http://132.161.132.157/drupal6/taxonomy/term/8">classes</category>
 <category domain="http://132.161.132.157/drupal6/taxonomy/term/7">courses</category>
 <category domain="http://132.161.132.157/drupal6/taxonomy/term/446">CS1</category>
 <category domain="http://132.161.132.157/drupal6/taxonomy/term/447">functional programming</category>
 <category domain="http://132.161.132.157/drupal6/taxonomy/term/14">Scheme</category>
 <pubDate>Tue, 06 Aug 2013 20:26:28 +0000</pubDate>
 <dc:creator>rebelsky</dc:creator>
 <guid isPermaLink="false">633 at http://132.161.132.157/drupal6</guid>
</item>
</channel>
</rss>
