CSC106 Exemption Exam Description

AP or Transfer Credit

If you transfer to URI AP scores of a 4 or 5 on either AP Computer Science Principles or AP Computer Science A, you can place out of CSC106 without taking this Exemption Exam. To do this, ensure that the College Board has sent your scores to URI and then talk with a Computer Science Advisor. Similarly, if you have college credit for URI’s CSC106 or URI’s CSC211 from a concurrent enrollment in high school, then ensure that the course shows on your transcript now and talk to a Computer Science Advisor. If you have college credit in some other Computer Science course, talk to a Computer Science Advisor to see if it exempts you from CSC106 or if you have to take this Exemption Exam. If you learned to program without one of these credentials, and you wish to place out of CSC106, then you must take this Exemption Exam.

CSC106 Exemption Exam Format

This Exemption Exam consists of:

  • A one hour conceptual test, taken whenever you wish, online via a Sakai site, that covers concepts and your ability to read, write, and understand code. There are True/False questions, multiple choice questions. questions that have to write small code fragments, and questions that have you trace code.
  • A programming project, that is done without timing constraints and requires only a computer (Windows, Mac, Linux, Chromebook, tablet, all can work) and good Internet connection. The programs must be written using the (free) Khan Academy Javascript + Processing JS programming environment. This project must be done completely on your own without help from others, and only using external code provided to you in the material in the Khan Academy lessons. If you have programmed in languages such as Java, C++, C, Python, or PhP, the Khan Javascript + ProcessingJS language is similar and we expect you to be able to work in it after reviewing the (free) lessons in the Khan course Intro to JS: Drawing and Animation online course as needed to familiarize yourself with the syntax and programming environment. This part of the Exemption Exam is not timed – you can take as much time as you wish to review Khan material and to write the programs as long as you turn the Exemption Exam in by the deadline for the semester in which you are supposed to take CSC106 (this deadline is covered below). You may also use online Khan documentation and instructional materials while you program to look things up.

CSC106 Performance Objectives

The Exemption Exam assesses the performance objectives listed below. Free material that is sufficient for you to prepare yourself to meet those performance objectives is available in the Khan Academy course Programming in JS Drawing and Animation

The three general CSC106 performance objectives, which you must demonstrate in the Exemption Exam, are:

  1. Program in Javascript + Processing JS in the Khan Academy Environment.
  2. Explain programming concepts and practices.
  3. Trace Javascript+ProcessingJS code by explaining what it does and what output it produces.

Specific CSC106 performance objectives are:

  1. Variables
    1. Explain what a variable is
    2. State the syntax for declaring a variable in Javascript+ProcessingJS
    3. Explain what a variable’s value is
    4. Explain how values can be determined by expressions
    5. Explain how variables can be used to abstract values making for easy program change
    6. Program using variables
  2. Expressions
    1. Explain the meaning of x = x + 1 (and statements like it) where x is a Javascript variable
    2. Write the Javascript syntax shortcuts for incrementing
    3. Explain how to generate a random integer in Javascript
    4. Trace code that involves variables and expressions
  3. Text and Output
    1. Explain how text is displayed in ProcessingJS
    2. Explain the syntax (quote marks). that delineates text from variables in a Javascript program
    3. Explain the properties of text strings in ProcessingJS: fill, coordinates, size – and how they are set
    4. Explain how text strings can be stored in variables
    5. Explain what addition of text strings is
    6. Program Javascript + ProcessingJS that puts text on the screen
  4. Functions
    1. Explain the concept of defining a function and calling a function
    2. State the syntax for defining a function and calling a function in Javascript
    3. Explain how functions can be used to abstract code that you can re-use multiple times in your program
    4. Explain how functions are defined with parameters that can be used in its code
    5. Explain how to call functions with different parameters
    6. Program in Javascript using functions that have parameters
    7. Explain what a function return value is
    8. Write Javascript code that has a function with a return value that is called in the code
    9. Explain what a built-in function is and how it differs from a programmer-defined custom function.
    10. Find and use other built-in Javascript + ProcessingJS functions using documentation
    11. Explain the difference between local variables and global variables including where they can be used and where they should be used.
    12. Program in Javascript with local and global variables
    13. Trace code with functions, parameters, global/local variables, and return values.
    14. Trace code that uses functions
  5. Conditionals and Boolean Expressions
    1. Explain what a conditional statement is and how it can be used to control behavior in a program
    2. Write Javascript If statements
    3. Explain what a Boolean expression is
    4. Program with a Boolean expression in Javascript + ProcessingJS
    5. State the Javascript syntax for relational operators, for instance — being “is equal”
    6. Explain the meaning of logical operators, like “and”, and how they can be used in conditional statements
    7. Write Javascript code with logical operators in conditional statements
    8. Explain if and else and how it makes decisions about what code to run
    9. Program with if and else in Khan Javascript
    10. Explain else if and how it can be added to if/else statements
    11. Program with else if in Khan Javascript
    12. Trace code that has conditional statements
  6. Loops
    1. Explain what a while loop is including the three parts: what to do over and over, what to change, and how to stop.
    2. Program while loops in Javascript
    3. Explain the syntax of a for loop in Javacript including its three parts in the beginning of the loop: start, how long to run the loop, and what to change in the loop.
    4. Program with a for loop in Javascript
    5. Explain the similarities of while loops and for loops, and explain why you would use one or the other.
    6. Explain what a nested loops are including the terms inner loop and outer loop
    7. Program in Javascript with nested loops.
    8. Trace code that has loops and nested loops
  7. Arrays
    1. Explain what an array is
    2. Explain that zero is the first index of arrays
    3. Program Javascript using arrays
    4. Program Javascript using the .length property of arrays
    5. Explain how to loop and do something with all elements in an array
    6. Program looping through an array in Javascript
    7. Explain how to modify arrays by adding elements
    8. Program modifying arrays in Javascript using the .push method
    9. Trace code that uses arrays or similar data structures.
  8. Objects and Object Orientation
    1. Describe how an object groups data (any type of data) about a single thing as properties of the object.
    2. Write Khan Javascript that uses objects
    3. Describe how dot notation is used to access the data in objects
    4. Program Khan Javascript using dot notation
    5. Program with arrays of objects in Khan Javascript
    6. Explain what an object constructor function does (dynamically creates a new instance of the object)
    7. Explain what the “this” reference does in object constructor functions
    8. Explain what an object method is
    9. Explain what object inheritance is
    10. Explain code where objects are dynamically created and then used in programs (e.g. passed as parameters, put in arrays of objects, etc)
    11. Identify object-oriented concepts in code and explain how they affect the code.
    12. Note that designing and defining object-oriented code with constructors, methods, and inheritance is not a necessary learning objective; the above six objectives focus on understanding the concepts and being able to explain their use in code you read, being able to use pre-written objects, but not necessarily design and write your own objects with those OO concepts.
  9. General Programming
    1. Describe how programmers use documentation to expand the basis from which they create
    2. Explain how designing software before coding it is done, and why it is a good practice.
    3. Describe how pseudo code is an abstraction for an algorithm that is independent of the programming language
    4. Write pseudo code for a simple algorithm
    5. Explain how comments in code help understanding the code
    6. Place comments appropriately in a Khan javascript program
    7. Explain what is meant by readable code
    8. Use coding conventions such as meaningful names in camelCase, and indenting to produce readable Khan Javascript code
    9. Explain what “Print Debugging” is and how it is done in JavaScript
    10. Explain what “Rubber Duck Debugging” is and how it is done in JavaScript
    11. Explain what “Exaggerated Output Debugging” is and how it is done in JavaScript

Exemption Exam Time Estimate

For a student who is a legitimate candidate to place out of CSC106, a rough estimate for the time for this exam is:

  • Review and learning Khan syntax using the Khan Academy programming course – rough estimate: 6 hours
  • Conceptual Test – 1 hour
  • Programming Project – rough estimate: 14 hours

The Exemption Exam can be taken at any time on your own, as long as it is submitted by the deadline for the semester in which you have planned to take CSC106 (this deadline is covered below). For the Programmning Project part, you can take as much time as you need and it does not have to be consecutive time (you can take breaks and even spread doing it over days or weeks). The Conceptual Test is a one hour timed exam and must be taken in a consecutive hour (once you start the Conceptual Test, you can not pause it).

Registering For The Exemption Exam

To register to take the Exemption Exam, contact the CSC106 Teaching staff at CSC106s1 at gmail.com with email subject “CSC106 Exemption Exam Request” . Provide in the email body your URI ID number (100…). Upon registration, you will be placed into the Sakai site for the exam. The Sakai site has more information and complete instructions on how to take the exam. All correspondence will be to your URI email address.

Deadline For Submitting The Exemption Exam

Both parts of the exam (conceptual and programming) must be submitted to the Sakai site by the deadline specified on that Sakai site. The deadline is typically at least 3 weeks before the Fall semester starts, or at least 2 weeks before the semester starts for Spring and Summer semesters.