CS 363 Comparative Programming Languages

Download Report

Transcript CS 363 Comparative Programming Languages

Computer Systems Lab
TJHSST
Philosophy
•
•
•
•
Creativity
Opensource accessibility to knowledge
Research
Information and resource availability
2
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
3
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
4
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
5
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
6
Electives – Computer Systems Lab
• Artificial Intelligence
• High Performance Computing and
Supercomputer Applications
• Computer Architecture
• Comparative Languages
7
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.
8
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.
9
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.
10
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).
11
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.
12
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.
13
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.
14
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.
15
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
16
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
17
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
18
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
19
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
20
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
21
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.
22
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
23
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
24
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
25
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
26
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
27
Computer Systems Research
Lab Requirements
•
•
•
•
•
•
Project proposal
Formal research paper
Oral presenations
Poster display
Project website/notebook folder
Logs
28
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
29
• 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
30
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
31
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
32
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
33
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?
34
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,
35
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
36
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
37
Intel Science Talent Search
Sieman's Westinghouse Comp.
• Review of Abstracts, Titles from recent
years
• Which are applicable to computer science?
38
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...
39
Computer Systems Lab
Hardware
• Linux workstations
• Mosix Cluster (being constructed)
• Cray SV1, 16 processors
– C, Fortran, vector processing
– Parallel programming, MPI, PVM
40
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
41
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
42
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 43
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
44
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
45
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
46
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
47
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
48
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
49