The Watson Project is a set of interactive labs implemented
in Java, designed as a companion to introductory computer
science courses. The labs are meant to reinforce fundamental
computer science concepts through interactive examples and
structured activities.
Labs in Watson will cover the following subjects:
- spreadsheet and database applications
- data structures
- computer graphics
- JavaScript-based programming
- object-oriented programming concepts
- assembly language and machine architecture
- digital logic
The Watson Spreadsheet Lab serves as an introduction to the
basic commands, tools and functions of a typical spreadsheet
program, as well as the Watson Lab. The lab consists of five
exercises and five activities dealing with common spreadsheet
operations. The exercises and activities will familiarize
the user with using a spreadsheet to compute averages and
creating formulas in concert with spreadsheets. This is a
general spreadsheet that can be used to instruct a user on
operations that are shared between most spreadsheet programs.
In addition, the lab provides an excellent platform for users
to begin using Watson, as the Spreadsheet functions are very
easy to understand and use.
The Watson Database Lab serves as an introduction to the
basic tools and queries of typical database systems. The lab
consists of twenty activities concerning database operations.
The activities cover the basics of building relations, querying
a database, and selecting entries. Each of these functions
are integral to the understanding relational databases and
the concepts that drive them. The student will be taken from
very easy queries and selections into increasingly more difficult
situations that require compound queries. These activities
will lead to a greater understanding of database concepts
.
The Data Structures Lab provides an overview of basic data
structures used in programming. The data structures covered
in this lab are the stack, the queue, the array, the linked-list,
and the tree. These data structures, when combined with algorithms,
can be used to solve complex tasks. Also this lab shows how
using different data structures can affect memory differently.
The Graphics Lab provides an introduction to fundamental
programming concepts, focusing on data types, variables, assignment,
sequence, and looping. The lab also introduces graphics primitives
such as points, lines, circles, and polygons. The lab functions
in two modes: an interactive drawing mode where the user draws
a image while the corresponding program code is automatically
generated, and a programming mode where the user writes a
program that, when run, produces an image. The activates included
in this lab require the user to design and implement small
programs that accomplish particular tasks. These tasks can
be accomplished rather rapidly due to the incorporation of
a point-and-click syntax-directed program editor that virtually
eliminates the introduction of syntax errors into the program
code.
The JavaScript Lab continues the introduction to programming
provided by the Graphics Lab. This lab is based on an augmented
subset of the JavaScript programming language. While one goal
of this lab is to enable the user to write simple programs
in the widely available JavaScript programming language, the
focus is on fundamental concepts, such as sequence, selection,
repetition, and functions, rather than on particular syntactic
features. Thus, the lab enforces concepts such as strong typing
that are usually absent from JavaScript and includes several
Watson-specific Input / Output instructions. The point-and-click
syntax-directed program editor used in the Graphics Lab is
also included in the JavaScript Lab -- freeing users to concentrate
on program design rather than being forced to track down syntax
errors.
The object-oriented programming lab is intended to reinforce
the concepts associated with object-oriented languages, and
present common data structures in terms of objects. This lab
covers objects, classes, inheritance and information hiding.
In addition to these object-oriented topics, arrays, stacks,
and queues are presented in terms of objects and classes.
A code viewing window illustrates the relationship between
objects and the actual code that makes up a class. As the
methods and parameters are edited and added, the code view
window updates to show how methods interact as a part of a
class.
The Watson Assembly Lab serves as an introduction to the
basic commands, syntax, and operation of a typical assembly
level language. The lab consists of six exercises and eleven
activity sections. The activities of the lab demonstrate the
operation of assembly level programming. This is not a specific
assembly language introduced, but a general assembly language
that can be applied to other assembly languages. The lab covers
how a machine is able to translate assembly code into machine
code. The code displayed can be tracked in the binary displayed
for a better understanding of how the machine works.
The Digital Logic lab introduces users to the concept of
circuits and logic. This lab covers how to build a ciruit
from logic gates. Using different logic gates and combining
their outputs can create new logic tables. Also this shows
a user how the machine is able to do mathematical operations
on the hardware level. Finally the lab teaches users Boolean
Algebra and truth tables.