CS 363 Comparative Programming Languages

advertisement
Computer Systems Lab
TJHSST
Philosophy
• Creativity
• Opensource accessibility to knowledge,
information and resources
• Research and development
• Writing and documentation of your
research
2
Project Opportunities in CS
• Artificial intelligence and machine
learning
• Opensource software development
• Game simulation and design
• Web development
• Database design
• Security and Cryptography
• Operating system, language design
• Networking and ISP
3
Computer Science Applications
•
•
•
•
•
•
•
Computer graphics and vision
Artificial intelligence, robotics
Distributed and Multiagent systems
Software engineering
Computer languages and compilers
Operating systems and networking
Database design
4
TJ Techlabs
•
Astronomy
– Co-req: Astronomy - The Universe or Solar System
• Automation and Robotics
– Recom: Princ. of Robotics I, II, Analog/Digital
Elec., Pre-engineering, Prototype Dev.
• Chemical Analysis
– Pre-req: AP Chemistry
• Computer Assisted Design
– Pre-req: CAD, Recom: Arch. Drawing,
Engineering Drawing, Pre-engineering
5
TJ Techlabs
• Computer Systems
– Pre-req: AP Computer Science
– Recom: Intro. to AI, Comp. Arch, Supercomputer Apps
• Energy Systems
– Recom: Pre-engineering, Analog Elec., Nature of
Materials, CAD
• Biotechnology
– Pre-req: Bio elective, Bio-tech elective, or Chem.
elective, Recom: DNA Science 1
• Microelectronics
– Recom: Analog, Digital, or Audio Electronics, or
Microprocessor Design
6
TJ Techlabs
• Oceanography and Geophysics
– Recom: Marine Biology
• Optics and Modern Physics
– Recom: Advanced Optics Apps or Quantum Mechanics
and Dev. in Modern Physics
• Prototyping and Engineering Materials
– Recom: Prototype Dev. and Processing or Nature of
Materials
• Video Technology
– Pre-req: Videotech and Communications
– Recom: Analog Electronics, Audio Electronics, or
7
Photography
TJ Techlabs - Portfolio
Skills We Stress
•
•
•
•
•
•
•
•
Writing – Technical Research Paper
Visual presentation – Digital poster
Oral presentation – PPT slides of the research
Research
Long term project development – iterative models
Working individually and in teams
Record keeping
Peer evaluation
8
Electives – Computer Systems Lab
• Artificial Intelligence
• High Performance Computing and
Supercomputer Applications
• Computer Architecture
• Comparative Languages
9
Computer Science at TJHSST
http://www.tjhsst.edu/compsci
• Full four-year sequence in Computer Science.
• The Computer Science Team is part of the
Math/CS Division and the Computer Systems Lab
is part of the Science and Technology Division.
• Our collective goal is to provide a world class
Computer Science education to our students and to
disseminate curriculum materials to other
academic institutions.
10
Computer Science at TJHSST
http://www.tjhsst.edu/compsci
• Introduction to Computer Science
– A mandatory course for all TJ students, the
intro. course assumes no prior programming
experience. Students study object-oriented
programming and develop fundamental
programming skill. In preparation for the AP
course, Java is the language of instruction.
11
Computer Science at TJHSST
http://www.tjhsst.edu/compsci
• AP Computer Science
– An elective course available to all students who
have completed Introduction to Computer
Science, APCS follows the College Board topic
outline. This course carries an additional 0.5
quality point in GPA calculation and pepares
students to take the APCS Exam given each
May.
12
Computer Science at TJHSST
http://www.tjhsst.edu/compsci
• Accelerated Computer Science
– A non-traditional route designed for
experienced programmers only, this course
requires exceptional problem solving skills (by
TJ standards).
13
Computer Science at TJHSST
http://www.tjhsst.edu/compsci
• Summer School
– How better to spend five weeks of summer than
learning Computer Science with 140 of your closest
TJ friends. A great way to fit more into your
cramped schedule, the summer school program
thrives because of students aides (upperclassmen,
apply early). An accelerated class is usually formed
during the second week. Not only is there an ice
cream social and a pizza party, but you may even
get to work with teachers from outside TJ.
14
Computer Science at TJHSST
http://www.tjhsst.edu/compsci
• Artifical Intelligence
– A half-credit semester course requiring APCS
as a prerequisite, students program in Python in
a Linux environment. This class carries the
same extra grade point value as an AP course.
• Computer Architecture
– A half-credit semester course requiring APCS
as a prerequisite, students program in C in a
Linux environment. This class carries the same
extra grade point value as an AP course.
15
Computer Science at TJHSST
http://www.tjhsst.edu/compsci
• Supercomputer Applications
– A half-credit semester course with a suggested
APCS prerequisite, students program in C and
Fortran in multiple UNIX environments. This class
will get you an account on our Cray SV1
supercomputer.
• Comparative Languages
– A half-credit semester course with a suggested
APCS prerequisite, students program in Python,
LISP, C++, Prolog, Smalltalk, ML and other exotic
tongues in a Linux environment. Veni, vidi, vici.
16
Computer Science at TJHSST
http://www.tjhsst.edu/compsci
• Senior Tech Lab
– One credit in Technology Independent
Research, such as this course in Computer
Systems Research, is required for graduation
from TJ.
17
Artificial Intelligence
• Search techniques for problem solving
– Uninformed: depth first, breadth first
– Heuristic: hill climbing, best first, A Star
• Game playing and adversarial search
– Minimax trees
– Alpha-beta pruning
• Machine Learning
– Evolutionary computation, genetic algorithms
18
Supercomputer and High
Performance Computing
• Parallel Computing
– Speedup of processing: Time/# of processors
– Sorts, searches, image processing across
matrices, fractal images
• MPI – Message Passing Interface
– Message sending topologies, ring/broadcast
– Time vs number of processors
• Computer Graphics in OpenGL
– 3D transformations, lighting for realism
19
Computer Architecture
• Organization of Computer Systems
• High level language implementations down
to the digital logic level
• SPIM simulator for assembly language
• History of the development of computing
machines
– Evaluate current platforms
– Analyze future forecasts
20
Comparative Languages
• Evolution of programming languages
• Syntax and semantics representation
• Machine parsing of grammars, building a
compiler
• Some issues: Exception handling,
Concurrency, Garbage collection
• Language approaches: imperative, object
oriented, functional, logic based
21
Comparative Languages
• Scheme
– functional programming language and a dialect of
Lisp. It was developed in the 1970s, MIT. Lisp,
1958, is the second-oldest high-level programming
language in widespread use today; only Fortran is
older.
• Smalltalk
– object oriented programming language designed at
Xerox PARC (Xerox Palo Alto Research Center)
by Alan Kay and others during the 1970s...great
influence on the development of many other
computer languages
22
Comparative Languages
• Prolog
– Programmation en logique (French for "logic
programming"), created by Alain Colmerauer
around 1972 to make a programming language
enabling the expression of logic instead of
specified instructions on the computer.
• ML
– functional programming language developed by
Robin Milner and others in the late 1970s at
Edinburgh University. CMU
23
Comparative Languages
• C programming language
– low-level standardized programming language
developed in the early 1970s by Ken Thompson
and Dennis Ritchie for use on the UNIX
operating system.
• Fortran
– compiled, programming language originally
developed in the 1950s and still heavily used
for scientific computing and numerical
computation half a century later.
24
Comparative Languages
• Python
– interpreted, interactive programming language
created by Guido van Rossum in 1990. Used in
our AI course.
• Ruby
– object-oriented language, combines syntax
inspired by Ada and Perl with Smalltalk-like
features, also shares some features with Python,
Lisp. Ruby's an interpreted language created by
Yukihiro "Matz" Matsumoto, began working on
Ruby on February 24, 1993 and released to the
25
public in 1995.
GMU Collaborations
• CS 635 Foundations of Parallel Computing
– Fall 2004, Dr. Pearl Wang
• CS 363 Comparative Programming
Languages
– Spring 2005, Dr. Elizabeth White
• CS 499 Autonomous Robotics
– Spring 2005, Dr. Sean Luke
• MASON Multiagent Simulation Toolkit
– Evolutionary Computation, Dr. Sean Luke
26
GMU Collaborations
• Center for Social Complexity
– Dr. Claudio Cioffi-Revilla
– CSS 600 Introduction to Computational Social
Science
– CSS 610 Computational Analysis of Social
Complexity
– CSS 640 Human and Social Evolutionary
Complexity
– CSS 643 Land-Use Modeling Techniques and
Applications
27
GMU Collaborations
• Center for Social Complexity
–
–
–
–
–
Dr. Claudio Cioffi-Revilla, Dr. Ann Palkovich
CSS 600 Introduction to Computational Social Science
CSS 610 Computational Analysis of Social Complexity
CSS 640 Human and Social Evolutionary Complexity
CSS 643 Land-Use Modeling Techniques and
Applications
– CSS 645 Spatial Agent-based Models of HumanEnvironment Interactions
– CSS 650 Physics Methods for Analyzing Social
Complexity
– CSS 660 Computational Social Science of Spacefaring
Civilization
28
Computer Systems Research
Goals for Students
• Pursue an individual or group research
project in computer science
• Write a formal research paper in support of
the project
• Develop presentation skills in support of the
project
• Maintain records of individual effort and
progress
29
Computer Systems Research
Lab Requirements
•
•
•
•
•
•
Project proposal
Formal research paper
Oral presenations
Poster display
Project website/notebook folder
Logs
30
Computer Systems Research
1st Quarter
• Gather preliminary background materials,
references
• Develop formal project proposal
– Feasability of subject matter, scope
– Algorithms, language(s), software tools
– Open ended, what can be accomplished this
year
• Begin writing programs experimenting with
algorithms
31
• Oral report on your proposal
Computer Systems Research
2nd Quarter
• Expanding upon research, reference
materials
• Expand program in support of research
goals
• Develop digital poster display
• Research paper preliminary: Title, Abstract,
Introduction/Background
• Oral presentation on your poster
32
Computer Systems Research
3rd Quarter
• Begin finalizing computer programs,
models
• Summarization of data collected, tests,
results
• Draft of your research paper
– Title, Abstract, Introduction, Background
– Development sections, what you've actually
done
– Preliminary results, conclusions
33
Computer Systems Research
4th Quarter
• Final version of your research paper
– LaTeX, PDF, PS, HTML
• Final version of your digital poster
• Visuals – graphs, charts, screenshots
• Oral presentation of project
34
Computer Systems Research
Resources
• Research Resources
– Research examples from universities
– Computer Science research areas
– Writing a research paper
• Mayfield Publications
– LaTeX, PDF
– Writing a proposal
– Intel and Westinghouse example projects
– Gantt charts/Time lines
35
Computer Systems Research
Iterative Development Model
• Periodic Iteration Progress reports
– See extremeprogramming.org
•
•
•
•
•
•
Plan, design, goal of this iteration
Pseudo code versions, sketches
Commented code
Testing, validation of this iteration's code
What to change, develop for next iteration
Any users for feedback?
36
Computer Systems Research
Peer/Faculty Review
• Peer assessments of research progress,
poster and paper feedback
• Appropriate title, abstract?
• Introduction, does it lead the reader into the
body of the paper, define the research being
presented, provide background?
• Research theory, code content, testing and
validation – how clearly are the algorithms
and theory stated, thorough testing,
37
analysis?
Computer Systems Research
Peer/Faculty Review
• Student Posters and Papers 2005 – http://www.tjhsst.edu/~rlatimer/assignments200
4/posters05.html
– or see top of www.tjhsst.edu/~rlatimer
38
Computer Systems Research
Research Writing Resources
• Mayfield Handbook for Technical and
Scientific Writing
• Detailed online resource
• Elements of Technical Documents
• Front matter, Body, End matter
39
Intel Science Talent Search
Sieman's Westinghouse Comp.
• Review of Abstracts, Titles from recent
years
• Which are applicable to computer science?
40
Linux Resources and Software
Tools – Opensource availability
• Programming
– C/C++, Java, Fortran, Python, Lisp
– PHP, Perl, HTML for WWW
– OpenGL – computer graphics
•
•
•
•
•
Image processing – Gimp
2D/3D analysis - Gnuplot
Openoffice for ppt, publishing
LaTex, PDF, PS for scientific writing
“planner” - Gantt charts, “dia” - flow charts, network
diagrams, UML – objects, electronic diagrams...
41
Computer Systems Lab
Hardware
• Linux workstations
• Mosix Cluster (being constructed)
• Cray SV1, 16 processors
– C, Fortran, vector processing
– Parallel programming, MPI, PVM
42
Computer Systems Lab
Accessing from Home
• WinSCP – Transfer files from Windows to
the Lab
• Putty.exe – work from home, connected
from Windows/Macs to Linux here
• “Compatable” software with
Windows/Macs
43
Computer Systems Lab
Project Areas 2004-05
• Algorithms
– Variants of Red-Black Trees
• Agent-based modeling of complex systems
– A Study of Microevolution
– Modeling of Evolutionary Systems
– Modeling of Evacuation Centers
– Traffic Modeling
– Model of the Decomposition of the Atmosphere
44
Computer Systems Lab
Project Areas 2004-05
• Modeling of Complex Systems (cont.)
–
–
–
–
Saturnian Moon System
Robot Swarms
Sabermetrics: Statistical Modeling in Baseball
A Bowling Ball in Action
• Machine Learning, Evolutionary
Computation
– Machine Learning to Develop a Game Playing Strategy
– Can a Robot Learn to Walk
– Assessment of Sorting Parts by Variable Slot Width 45
Computer Systems Lab
Project Areas 2004-05
• Natural Language Processing,
Computational Linguistics
– Part of Speech Tagging with Training Corpora
• Example: “Hospitality NN is BEZ an AT
excellent JJ virtue NN”
• NN: singular common noun, BEZ: is, AT:
article, JJ: general adjective
– Computational Comparative Diachronic Historical
Linguistics
• Systems Programming, Development
– Kernel Debugging API Library
46
Computer Systems Lab
Project Areas 2004-05
• Computational Biology
– Investigation of Implementations of DNA
Sequence Pattern Matching Algorithms
(BLAST)
• Computer Architecture
– Construction and Application of a Beowulf
Cluster
47
Computer Systems Lab
Project Areas 2004-05
• Computer Graphics
– Polygon Mesh Rendering (03-04)
– Creating a 3D Game with Textures and
Lighting
– Car Simulation and Modeling
• Computer Music
– Genetic Algorithm Music Composer
• Software Development
– Software Development Team
48
Computer Systems Lab
Mentorship Opportunities
• Naval Research Lab
– Artificial Intelligence
– Robotics Labs
– Computer Vision, Image Processing
• Virtual Technologies
– Software Development
• GMU – Center for Social Complexity
– Agent based modeling
49
Computer Systems Lab
Mentorship Opportunities
• UUnet
– Internet, Network programming
– 7 layers of Internet protocol
• GMU – Computer Science Department
– Artificial Intelligence, Robotics Labs
– Computer Vision, Image Processing
• Walter Reed Army Intstitute
• NIH
– Biotech, image processing programming
50
Computer Systems Lab
Mentorship Opportunities
• Semi-Autonomous Control of a Segway
Robotic Mobile Platform - NRL
• The Effect of Sound Distortion on Hearing
Perception - NRL
• Development of a Web Interface for
Accessing Chemical Information in Thor
and Informix Databases – Walter Reed
Army Institute
• Development of a Data Measuring
Application for Federates Used in
Simulations – Virtual Technologies
51
Software
Systems
Development
The primary purpose of our
Computer Systems Research
project is to investigate the
feasibility and consequences of
establishing a student workgroup
based on a classical development
lifecycle model. We modeled our
project on the Waterfall
Development Model, otherwise
known as the Systems
Development Lifecycle Model
(SDLC).
52
Computational
Models of
Traffic
The goal of my project is to make an
accurate simulation of traffic in an
multi-lane intersection world that
will be easily mutable for work in
studies on the effects of construction
work and accidents on traffic flow.
Traffic Simulations are used in a
variety of ways. One of the most
prominent and original uses was to
use traffic simulations to evaluate
alternate treatments.
53
Genetic
Algorithms
and Music
Genetic algorithms use feedback
resulting from evaluating data sets
to optimize these data sets for the
best performance as defined by
the user. The main data
processing is done in LISP. The
creation of audio files is done
using Csound.
54
Car Simulation
This project will be used to simulate
carrelated incidents from the
real world. By working with this
program, users will be able to benefit
from responses to scenarios that may
have hazardous consequences in real
life. By showing real people the
decisions of robots, human drivers
will attempt to replicate the robots'
acceptable actions.
55
Sorting Parts of
Variable Width
Problem Statement. To analyze the
efficacy of sort parts by using slots
and utilizing the variable angular
velocities that result when parts of
distinct physical dimensions move off
of a relatively flat inclined surface.
Purpose. The final goal is to assess
the feasibility of quality control based
on taking advantage of the different
orientations at various time after
release that are caused by deviations
from the original product.
56
Robot
Swarms
My project is an agent based
simulation, posing robots in a
“game of life”, with each new
generation of robot comes new
genes using a random number
selection process creating the
mutations and evolutions that in
real life we experience for DNA
cross over and such.
57
Modeling
Evolutionary
Behavior
The purpose of this project is to
attempt to model evolutionary
behavior in agents in an environment
by introducing traits and
characteristics that change with the
different generations of agents.
I hope to create an environment where
certain agents will prosper and
reproduce while others will have traits
that negatively affect their
performance. In the end, a single basic
agent will evolve into numerous
subspecies of the original agent and
demonstrate evolutionary behavior.
58
Developing a
Learning
Agent
The goal of this project was to
create a learning agent for the
game of bridge. I think my
current agent, which knows the
rules, plays legally, and finds
some basic good plays, is a step
in the right direction. This agent
could and will be improved
upon over the course of the year
and will become smarter and
learn faster throughout the year
59
Modeling a
Bowling Ball
The idea behind this project is to
create a model of the dynamical
bowling game system. By analyzing
sets of physics equations and
applying them to this system,
a program can be created to
calculate and output the path and
other characteristics of a bowling
ball's traversal across a bowling
lane. This ouput is based on a set of
initial conditions, including speed,
angle, lane conditions, and starting
rotation.
60
Optimization
of a Traffic
Signal
The purpose of this project is to
produce an intelligent transport
system (ITS) that controls a traffic
signal in order to achieve
maximum traffic throughput at the
intersection. To produce an
accurate model of the traffic flow,
it is necessary to have each car be
an autonomous agent with its own
driving behavior. A learning agent
will be used to optimize a traffic
signal for the traffic of the
autonomous cars.
61
Modeling a
Saturnian
Moon
This project hopes to add to our
understanding of space systems by
providing a comprehensive
simulation of the Saturnian moon
system. By doing this, this project
attempts to expose what phenomena
can't be explained with modern
models and perhaps suggest theories
to explain the unexplained.
62
Modeling
Atmosperic
Change
My goal is to create a model of the
atmosphere over time, predicting
its strength given the increasing
amount of pollution as well as the
controversial but effective
Montreal Protocol. Many projects
are in place to save the ozone, and
this model will assist in assessing
the impact of anti-pollution
movements and determine the
longterm possible outcome given
many parameters. This model
features usercontrolled variables,
allowing the user to manipulate the
year, solar flux, and existence of
anti-pollution projects.
63
An Investigation
into
Implementations of
DNA Sequence
Pattern Matching
Algorithms
There is an immense amount of
genetic data generated by
government efforts such
as the human genome project and
by organization efforts such as The
Institute for Genomic Research
(TIGR). there exist large amounts
of unused processing power in
schools and labs across the country.
Harnessing some of this power is a
useful problem not just for the
specific application in
Bioinformatics of DNA sequence
pattern matching.
64
Modeling of
Evacuation
Centers Using
NetLogo
Modeling is a powerful tool that
allows a programmer or social
engineer to observe cause-andeffect relationships in
occurences that a) happen too
slowly or quickly to see, b)
involve danger or safety
concerns, c) occur on a scale
too large or too small for study,
d) is not a common occurrence.
Using NetLogo, a multi-agent
programmable modeling
environment, the socio- and
psychological factors
affecting decision-making in
these situations can be
effectively simulated.
65
Construction and
Application of a
Pentium II Beowulf
Cluster
I plan to construct a super computing
cluster of about 15-20 or more
Pentium II computers with the
OpenMosix kernel patch. Once
constructed, the cluster could be
configured to transparently aid
workstations with computationally
expensive jobs run in the lab. This
project would not only increase the
computing power of the lab, but it
would also be an experiment in
building a lowlevel, lowcost cluster
with a stripped down version of
Linux, useful to any facility with old
computers they would otherwise
deem outdated.
66
Study of
Microevolution Using
Agent-Based Modeling
in C++
Agent Class
class Organism
{
public: Organism();
Organism(int ident, int row2, int col2);
Organism(Nucleotide*
mDNA,Nucleotide* dDNA, int ident,
bool malefemale,
int row2, int col2);
~Organism();
void printGenome();
void meiosis(Nucleotide* gamete);
Organism* reproduce(Organism* mate,
int ident, int r, int c);
int Interact(Organism* neighbors, int
nlen);
int GeneValue(bool parent, int
chromnum, int gennum);
67
Creating a 3D Game
With a Study of
OpenGL Textures
and Lighting
Techniques
To create a first person 3D game using
OpenGL. The program consists of
using models, textures, lighting, and
polygons to create a 3D world in
OpenGL. Various equations are used
to calculate camera angles,
movement, and physics. For example,
to move the camera, “eye
movements” are controlled by
glLookAt, which takes an eye position
with 3 points (x,y,z) and 2 vectors.
One vectors is the up direction and the
other is the forward direction.
68
Paintball
Frenzy!
Optimized
Minimax
Agent AI
The purpose of this project is to
create an innovative and
enjoyable graphical game and
program a minimax AI agent
that performs optimally.
69
Using
Machine
Translation
in a German
– English
Translator
This project attempts to take the
beginning steps towards the goal
of creating a translator program
that operates within the scope of
translating between English and
German.
70
A Study of
Balanced
Search Trees
This project investigates four
different balanced search trees
for their advantages and
disadvantages, thus ultimately
their efficiency. Runtime and
memory space management are
two main aspects under the
study. Statistical analysis is
provided to distinguish subtle
difference if there is any. A new
balanced search tree is suggested
and compared with the four
balanced search trees.
71
Linux Kernel
Debugging API
The purpose of this project is to create an
implementation of much of the kernel
API that functions in user space, the
normal environment that processes run
in. The issue with testing kernel code is
that the live kernel runs in kernel space, a
separate area that deals with hardware
interaction and management of all the
other processes. Kernel space
debuggers are unreliable and very limited
in scope; a kernel failure can hardly
dump useful error information because
there's no operating system left to write
that information to disk.
72
Machine Learning
Techniques for
Game Playing
Machine learning allows the computer
to create its own logical rules, and
learn from its past experiences.
Machine Learning allows an AI to
increase its abilities over time, even
without additional direct programmer
input. My project hopes to develop a
proficiency at Tic-Tac-Toe. My
project hopes to create a new
algorithm for a relatively simple
game, Tic-Tac-Toe. Ideally, this
algorithm will be modified according
to its results to create better
algorithms.
73
Part-of Speech
Tagging with
Corpora
The aim of this project is to create and
analyze various methods of part-ofspeech tagging. The corpora used are
of extremely limited size thus offering
less occasion to rely entirely upon
tagging patterns gleamed from
predigested data. Methods used to
analyze the data and resolve tagging
ambiguities include Hidden Markov
Models and Bayesian Networks.
Results are analyzed by comparing the
system-tagged corpus with a
professionally tagged one.
74
Benchmarking
of
Cryptographic
Algorithms
The author intends to validate
theoretical numbers by
constructing empirical sets of data
on cryptographic algorithms.
This data will then be used to
give factual predictions on the
security and efficiency of
cryptography as it applies to
modern day applications.
75
Resource Locking
and Synchronization
in the Linux Kernel
The goal of the KDUAL project is to create
a C library which implements the
kernel Application Programming Interface
(API) in user-space and performs automatic
debugging. Sections of kernel code can
then be compiled against this library and
run as ordinary programs for convenient
testing. This particular section of the
project aims to implement the kernel's
resource locking API with automatic
detection of deadlock situations. Locking
will be implemented in two parts-the core
algorithms, with their ownAPI designed to
be convenient for the developers, and
simple glue code bridging that API to the
kernel API.
76
Algorithms for
Computational
Comparative
Historical Linguistics
Over time, languages change by regular,
systematic processes. It is possible, by
looking at the state of a language now and
in the past, to deduce the exact changes that
occurred, and the order in which they
occurred. These changes also split
languages, therefore it is also possible to, by
using modern languages as input, induce the
probable structure of their parent language.
My goal is to develop algorithms by which
computers may efficiently analyze the
historical structure of languages and
language families.
77
Optimizing Genetic
Algorithms for
Cypher Decoding
Over the past several years, genetic
algorithms have come into wide use
because of their ability to find good
solutions to computing problems very
quickly. They imitate nature by crossing
over strings of information represented
as chromosomes, with preference given
to the more fit solutions produced. They
hold great promise in the field of
cryptology, where they may be used to
quickly find good partial solutions, thus
eliminating much of the intense manual
labor that goes into identifying initial
coding schemes.
78
Decision Trees for
Career Guidance
This research project will be an investigation
into the design and implementation of various
decision trees for career guidance. A decision
tree takes into account some sort of situation
outlined by a group of parameters and outputs
a Boolean decision to the situation. This
project will take into account many aspects
associated with decision trees including
database building, searching and sorting, and
algorithms for accessing data.
My project utilizes numerous decision trees in
an effort to serve as a tool for career guidance
for young adults. A user will fill out a form of
specified fields that will then be analyzed by
the group of decision trees until a field of
study/occupation is given to the user as the
outcome. This group of decision trees will be
built through database building techniques.
79
Archival of Articles
via RSS and
Datamining Performed
on Stored Articles
RSS (Really Simple Syndication,
encompassing Rich Site Summary and RDF
Site Summary) is a web syndication protocol
used by many blogs and news websites to
distribute information it saves people having
to visit several sites repeatedly to check for
new content. At this point in time there are
many RSS newsfeed aggregators available to
the public, but none of them perform any
sort of archival of information beyond the
RSS metadata. The purpose of this project is
to create an RSS aggregator that will archive
the text of the actual articles linked to
in the RSS feeds in some kind of linkable,
searchable database, and, if all goes well,
implement some sort of datamining capability
as well.
80
An Analysis of
Sabermetric Statistics
in Baseball
For years, baseball theorists have pondered the
most basic question of baseball statistics:
which statistic most accurately predicts which
team will win a baseball game. With this
information, baseball teams can rely on
technological, statistical-based scouting
organizations. The book, Moneyball addresses
the advent of sabermetric statistics in the
1980s and 1990s and shows how radical
baseball thinkers instituted a new era of
baseball scouting and player analyzation. This
project analyzes which baseball statistic is
the single most important. It has been found
that new formulas, such as OBP, OPS, and
Runs Created correlate better with the number
of runs a team scores than traditional statistics
such as batting average.
81
A Comparison of AI
Types of Various
Strengths
Many different methods of Artificial
Intelligence in games exist in todays
world, such as a min-max search or goaldirected reasoning. By using a game
that is less complex than chess, the standard
game for testing AI's, I intend
to compare various AI methods and their
strengths in the game of Othello.
82
Developing an AI
Player for Guess Who
My project is to create a computerized
version of the game "Guess Who?" complete
with an AI player. This involves two
research areas: Game AI and Data Mining.
Data mining is the analysis of data and the
use of software techniques for finding
patterns and regularities in sets of data. My
AI's strategy algorithm will formulate
questions that eliminate 50% of the suspects,
which is the optimal percentage.
83
Techniques of
Asymmetric File
Encryption
Encryption programs have been created
to protect privacy during a transfer of
files and to make sure that sensitive files
will be protected. My project is to create
an asymmetric file encryption program.
This means that encrypted files will need
a pass-key to open that will be different
from the key used to encrypt. This
program could be applied practically to
protect files during
transfers.
84
Computer Vision: Edge Detections
Vertical diff., Roberts, Sobels
85
Computer Vision: Edge Detections
Sobels – Red, Green, Blue
86
Computer Vision: Edge Detections
Sobels – No Red/Green/Blue
87
Projects from previous years
• Computer Simulation and Modeling,
Computational Computer Science
– Evolution of Darwin's Finches: Simulation
using Genetic Algorithms
• This project uses genetic algorithms to simulate the
process of the evolutionary changes that gave rise to the
varying species of the finches. Factors including
theabundance of food, probability of mutation, and size of
the initial results of this project demonstrate the drastically
different evolutionary paths the finches could have
followed depending on varying environmental conditions.
Projects from previous years
• Computer Algorithms
– The Use of Polynomial-time Reducibility to
Improve Approximations to NP-complete
Problems
• NP-complete problems are thought, though not proven, to be
intractable. Because they are commonly encountered by
programmers in situations where an exponential -time solution
will be too slow, efficient approximations based on greedy or
random approximation algorithms are necessary. By reducing
one NP-complete problem to another, some aspect of it that was
not immediately obvious but that can be exploited to produce a
superior greedy algorithm may be revealed.
Projects from previous years
• Computer Graphics
– Implementation of Ray Tracing to Create a
Virtual Underwater Environment
• The realistic rendering of a scene beneath the water's surface
allows users to experience and learn about the underwater
surroundings. Students are able to "travel" underwater with this
education tool.
Projects from previous years
• Encryption
– Encryption and Decryption Using Character
Manipulation, Twist and Flip, and RSA
• The project will combine three methods of encryption already
used in various levels of security. Character (bit) manipulation
provides the least amount of security, but combined with a
modified Twist and Flip algorithm and RSA, the most advanced
encryption method in use, there is the possiblity of a nearly
unbreakable code.
Projects from previous years
• Database, Expert Systems
– Online Bleeding Logs for Hemophiliacs:
Simplifying Data Collection and Analysis
• The objective of this project is to simplify for doctors of
hemophiliacs the process of collecting, compiling, searching, and
viewing information contained in their patients' bleeding logs.
Projects from previous years
• Computer Music
– The Stravinsky Project : Using Genetic
Algorithms to Compose Music
• This program will use artificial intelligence and user input to
compose original music using midi output from the computer.
The AI will use genetic algorithms based on music theory to
determine the "quality" of any given phrase, and the type of
music will gravitate towards the preference of the user.
Projects from previous years
• Computer Graphics, Grid Computing
– SETI Visualizations: Development of
Graphical Utilities for Explaining SETI
• The SETI (Search for Extra-Terrestrial Intelligence) program
has been active since 1960. It publicises itself well with many
text-based sites. However, few graphical utilities exist to explain
the program. The purpose of this project is to develop such
utilities using OpenGL.
Projects from previous years
• AI, Cellular Automata – with GMUComputer
Science Dept.
– Solving the Majority Classification Problem
and Cellular Automata
• Creation of an algorithm that will solve the Majority
Classification Problem in an efficient and successful manner.
Projects from previous years
• Linux Educational Applications
– The Luminance Open Source Educational
Desktop
• The Luminance Desktop aims to be the premier open source
educational desktop. It will be comprised of many other open
source projects. The Luminance desktop does not aim to reinvent
the wheel and rewrite every single application. Rather its goals is
to create uniformity and ease of use to the a small subset of
users, students and teachers. All software forming the luminance
desktop will be Open Source, in order to promote the Open
Source philosophy.
Projects from previous years
• Portal to the Past - a Virtual Museum Tour
• Three-Dimensional Network Structure Visualization
Using OpenGL Graphics and TCP/IP
• Creation of an Intelligent Traffic Light System
• Exploration of Software Defined Radio
• Investigation of Methods of Computer Music
Generation
• Random Terrain and Non-fractal Urban
Environment Generation
Projects from previous years
• Terrain Generation in OpenGL
• Polak-Ribiere conjugate gradient method for
function minimization, Quantum Computing
• New Quantum Mechanical Model of Lossy
Information Propagation and Transmission
• Parameter Defined Polygon Modification
• Artificial Intelligence Techniques in Dots and Boxes
•Modular Tank Simulation
Thanks and have fun computing!
Download