What is Computer Science? - Foundations of Programming
Download
Report
Transcript What is Computer Science? - Foundations of Programming
What is Computer Science?
• Study of the foundations of computing, data
storage, and information processing
• Computer Science spans diverse areas:
–
–
–
–
–
–
–
–
–
Security and cryptography
Robotics and computer vision
Data mining and databases
Distributed and mobile systems
Intelligent systems and gaming
Computational biology
Computer networks
Computer graphics and animation
More…
How is CS different?
• Computer scientists obtain a comprehensive
foundation that permits them to adapt to as well
as create new technologies, new paradigms and
new ideas.
• Foundation consists of:
– Mathematics (problem solving, algorithms, calculus,
discrete math)
– Modeling (Object oriented programming, abstract data
types, design patterns)
– Systems (Computer architecture, operating systems,
networks, foundations of programming languages)
• Computer Scientists have flexible employment
opportunities
What is Software Engineering?
• Many Computer Scientists make their career in
the software development industry.
• Software engineers develop and maintain
software that:
– behaves reliably and efficiently
– is affordable to develop and maintain
– satisfies all the customers’ requirements.
A Sample of CS areas
•
•
•
•
•
•
•
Distributed systems development
Computer game software development
Database administration
Search engine technologies
Computer game development (Prof. Linhoff)
Web mining (Prof. Mobasher)
Remote Sensors (Prof. Montgomery)
Distributed System development
• A distributed system is software system
that uses multiple independent computers
communicating over a network to
accomplish a common task.
• Examples:
– Email
– Napster and SETI@home
– World Wide Web
– Online games
– Grids
A sample job listing (excerpts)
Applications Developer - Computer Professional
Department: Computing Division, Fermilab.
• Must have software analysis, development, testing and
debugging skills.
• Excellence in distributed software development and
integration using some or all of C++, Java, and Python is
needed.
• Experience with database systems and (…)
• Proven ability in oral and written communication is
essential.
• Demonstrated ability for analysis and resolution of
problems in distributed and/or networked systems.
Computer Game software
development
• Game software development requires an
understanding of
– Mathematics
– Computer graphics
– Computer architecture
– Operating systems
– Network programming
– Parallel processing
A sample job listing (excerpts)
Software Engineer
Midway Games Inc, Advanced Technology Group.
• Work on next generation consoles XBox360 and PS3
• Develop runtime systems including memory, file, audio,
threading, graphics, and I/O
• A minimum of a bachelor's degree in CS, CE, EE
• In depth knowledge of C, C++, STL and Templates
• Be familiar with object oriented design, design patterns
and UML diagramming
• Data structure knowledge including searching, sorting
and memory management
• Great communication skills
Database administration
• Databases are used to store and organize
data in ways to make insertion, search and
retrieval of information efficient
• Databases are used in the following
industries
– Financial industry
– Search engines
– Travel industry
A sample job listing (excerpts)
Title: Database Administrator, Chicago Mercantile Exchange
Responsible for the administration of Oracle 10g RAC, Grid
and ASM running on Sun Unix or Linux operating systems.
Must be able to implement databases on Unix and Linux
platforms.
Requirements:
– In depth knowledge in the works of Oracle 10g, RAC,
ASM and Grid, TOAD, DB2 and SQL Server a plus
– Experience in a very high transaction rate OLTP
applications required
– Working knowledge of Linux and Unix operating systems
are required. NT and MVS is a plus.
Search Engine Technologies
• A Search Engine is a computer program that
is used to find information stored in a
software system such as the World Wide
Web
• How does a search engine return web pages
that are relevant to the query?
• Technologies include: databases, distributed
systems, artificial intelligence, networking
etc.
A sample job listing (excerpts)
Openings in Software Engineering, Google
We need world-class engineers to join our engineering
team in developing our next-generation search engine (…)
We’re working on problems in (…) cutting-edge
information retrieval algorithms, scalability issues related
to dealing with huge amounts of data and a rapidly
increasing user population, and a variety of novel search
features.
Requirements:
– Enthusiasm for solving interesting problems.
– Experience with Unix/Linux or Windows environments,
C++ development, distributed systems, machine
learning, information retrieval, network programming…
The Bachelor of Science in
Computer Science
• Mathematical tools
• Problem solving, algorithms, and
structured programming
• Modeling and object oriented
programming
• Computer Systems
• Communication skills
• Senior Capstone
Advanced Coursework
•
•
•
•
•
•
•
•
•
•
•
•
•
Theory
Data storage
Computer Systems
Data analysis and mining
Artificial intelligence
Computer vision
Human computer interaction
Computer gaming
Software engineering
Computer graphics and animation
Computational Sciences
Network programming
and more to come…
Sample CS topics covered at CTI
• How does Google work and why is it such a good
search engine?
• How does a computer beat the World Chess
Champion?
• How does information get routed on the Internet?
• How does encryption work and how can encrypted
messages be broken?
• How do the Mars robots see and process the
landscape around them?
Sample CS topics covered at CTI
• How does one protect a system against an attack?
• How are players synchronized in an online
computer game?
• What techniques are being developed to increase
the speed of microprocessors?
• What makes a Graphical User Interface userfriendly?
• What problems are Computer Scientists currently
solving in the field of Computational Biology?
Software Engineering
Concentration
• This concentration integrates:
– the foundational Computer Science material with
– engineering practices developed for building and
maintaining software applications.
• Six additional SE courses.
What Computer Scientists do?
• Employed at the top programming jobs
• Invent new applications for computer systems
– World Wide Web
– Google search engine
– Peer-to-Peer networks
• Develop better ways to solve computing problems
– More secure ways to encrypt information
– More efficient ways to send audio and video on
the Internet
Career Outcomes
Commerce
LA&S
CTI
Education
Music
Theatre
Students
803
838
301
203
50
58
Average
Salary
$42,596
$30,112
$45,909
$31,364
$25,000
$30,714
Average salaries based on a 2004 survey of bachelor degree
graduates conducted by the Career Center 6 months after
degree completion.
Career Outcomes
All CTI
Estimated
Annual
Salary
Do degree
field and
job relate?
Information
Systems
$46,212
Networks
E-Commerce
Other
$45,909
Computer
Science
$48,333
$40,000
$47,222
$40,455
67%
79%
61%
58%
60%
50%
Based on a 2004 survey conducted by the Career
Center 6 months after degree completion.
So, why choose CS?
1
2
3
4
5
Career
Software engineer
College professor
Financial advisor
HR manager
Physician assistant
6 Market research analyst
7 Computer/IT analyst
8 Real estate appraiser
Job growth
46.07%
31.39%
25.92%
23.47%
49.65%
Average pay
$80,427
$81,491
$122,462
$73,731
$75,117
20.19%
36.10%
22.78%
$82,317
$83,427
$66,216
Source: Money Magazine, April 12, 2006
And why choose CS at CTI?
• Because our students are successful!
• Ranking of the top 12 US teams at the 2006
World Programming Contest:
Rank
1
2
3
4
4
4
Team
MIT
Princeton
DePaul
Caltech
Maryland, Coll.P.
Washington, St.L.
Rank
7
7
7
7
7
7
Team
Duke
Carnegie Mellon
Georgia Tech
Virginia Tech
Rice
Wisconsin, Mad.