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.