CSE131: Intro. to Computer Science (Programming) - bsiever/WUSTL-CSE-Curriculum GitHub Wiki

Proposed Learning Outcomes

  • Given a specific concept, select the most appropriate type to represent the concept (integers, boolean, floating point, and string)

  • Be able to utilize basic I/O operations (console printing, requesting user input)

  • Be able to explain and make appropriate use of variable initialization and assignment

  • Given an expression containing literals, determine the resulting value and its type.

  • Explain the behavior of conditional and nested conditional statements

  • Construct nested conditional expressions for a given problem

  • Given a loop (for or while), be able to quantify the number of iterations or express the concept controlling the number of iterations.

  • Create a loop appropriate for a given iterative computation/problem.

  • Explain the behavior of nested loops (order of updates; express how total number of iterations of innermost items are found)

  • Create nested loops for a given problem

  • Explain the behavior of nested control statements

  • Create nested control structures for a given problem

  • Explain and make appropriate use of index-based collections (array/list)

  • Understand and be able to implement common operations on collections (find an element, find max, find min, swap specific elements, etc.)

  • Given a method or function description, create an appropriate signature (fitting choices for parameters, parameter types, and return type)

  • Create a method/function for a given problem

  • Create appropriate arrays for a given problem

    • Identify when arrays are needed
    • The type and number of dimensions
    • How they should be used
  • Explain the behavior of code that uses arrays (one or multi dimensional)

  • Be able to utilize a new API based on "typical documentation" (Ex: Javadoc docs for Java)

  • Identify recursive substructure in problems (where present and reasonably straight forward)

  • Explain the concept of recursion and where it may be beneficial

  • Given a description of a recursive process, create a working recursive algorithm

  • Create a class for a defined concept

  • Given a "story" for a class, be able to select appropriate choices and types for instance variables (members/properties) and methods.

  • Create programs from "scratch" to solve modest computational problems.

  • Be able to create a primitive event driven program (Event loop that responds to mouse clicks, key input, etc.)

  • Be able to explain the differences between basic collections (Set, List, and Map)

  • Be able to make use of basic collections to solve problems

  • Be able to explain different notions of equality an equivalence

  • Be able to explain basic hash function concept

  • Understand basic concepts of reference variables (aliases for objects)