## Spring 2012

### HPU CSCI: Computer Sciences II

CSCI 2912 is an intermediate problem-solving and programming course using the Java programming language. Topics cover: encapsulation, inheritance, polymorphism, aggregate classes, abstract classes, wrapper classes, interfaces, recursion, exceptions, file I/O, graphical user interfaces, abstract data structures, and software engineering practices, such as modular programming techniques, defensive programming, documentation, requirement specifications, and testing

## Spring 2011

### ICS 311: Algorithms

Design and correctness of algorithms, including divide-and-conquer, greedy, and dynamic programming methods. Complexity analyses using recurrence relations, probabilistic methods, and NP-completeness. Applications to order statistics, disjoint sets, B-trees and balanced trees, graphs, network flows and string matching.

## Fall 2010

### ICS 311: Algorithms

Design and correctness of algorithms, including divide-and-conquer, greedy, and dynamic programming methods. Complexity analyses using recurrence relations, probabilistic methods, and NP-completeness. Applications to order statistics, disjoint sets, B-trees and balanced trees, graphs, network flows and string matching.

## Spring 2010

### ICS 211: Introduction to Computer Science II

Algorithms and their complexity, introduction so software engineering, data structures, searching and sorting algorithms, numerical errors.

## Fall 2009

### ICS 241: Discrete Mathematics for Computer Science

Program correctness, recurrence relations and their solutions, divide and conquer relations, relations and their properties, graph theory, trees and their applications, Boolean algebra, introduction to formal languages and automata theory.

### ICS 312: Machine-Level and Systems Programming

Machine organization, machine instructions, addressing modes, assembler langauge, subroutine linkage, linking to higher-level languages, interface to operating systems, introduction to assemblers, loaders, and compilers.

## Spring 2009

### ICS 311: Algorithms

Design and correctness of algorithms, including divide-and-conquer, greedy, and dynamic programming methods. Complexity analyses using recurrence relations, probabilistic methods, and NP-completeness. Applications to order statistics, disjoint sets, B-trees and balanced trees, graphs, network flows and string matching.

### ICS 313: Programming Language Theory

Syntax, control structures, data binding and scope, language styles, programming in LISP and Prolog, language and automata theory.

## Fall 2008

### ICS 211: Introduction to Computer Science II

Algorithms and their complexity, introduction so software engineering, data structures, searching and sorting algorithms, numerical errors.

## Tutorials

### Java Applet Tutorial

A Java Applet is a program written in the Java programming language that can be included in an HTML page, much in the same way an image is included in a page. When we use a Java technology-enabled browser to view a page that contains an Applet, the Applet’s code is transferred to our system and executed by the browser’s Java Virtual Machine.

### Shell, Makefiles, and Tarballs

In this tutorial, we will first demonstrate how to compile source code using shell scripts and makefiles. Then we will demonstrate how to create tarballs (.tar.gz or .tgz files).

### Self-Signed Applet Tutorial

Signed Applets contain a signature that users may use to verify the identity of the organization responsible for the Applet and confirm that it has not been modified since the signature was applied. If the signature is approved, the Applet is granted security rights roughly equivalent to an ordinary standalone program.

### Downloading and Parsing Google Search Results

This tutorial first provides a brief overview of Googleâ€™s PageRank calculation, which is a graph algorithm similar to the one required by Implementation Assignment #2 in ICS 311. This tutorial then provides a command-line program that encodes command-line arguments as a Google search query, downloads the results, and displays the top ten corresponding links as standard output.

### Sorting Algorithms

This tutorial provides a sample implementation of several sorting algorithms, bubble sort, insertion sort, merge sort, quick sort, selection sort, and heap sort. This tutorial also provides a performance comparison analysis result of these sorting algorithms.

### Installing LispWorks on Linux

This tutorial describes how to install LispWorks on Linux. The steps and screenshots in this tutorial were taken while running Ubuntu 9.04 Desktop Edition, and they will vary slightly based on your PC’s configuration.

### OLPC Recovery

This tutorial shows how to resurrect a bricked OLPC laptop caused by an old firmware and a dead RTC battery.

### Java Command Line Arguments

This tutorial shows the steps for how to specify command line arguments in Eclipse and jGRASP.