What is Computer Science? - Foundations of Programming
Download
Report
Transcript What is Computer Science? - Foundations of Programming
What is Computer Science?
• The study of the foundations of computing, data
storage, and information processing
• Computer Scientists use this knowledge to
develop applications we all use
• 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 develop applications for computer
systems
• To do this, 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 and problem solving
– Modeling and programming
– Computer systems
• Computer Scientists can work in ALL areas of IT
What is Software Engineering?
• Many Computer Scientists work in the software
development industry.
• Software is often developed by large developer teams
that require all developers to use common
approaches/rules/practices to software development
• Software engineering is a field that studies and defines
the best approaches/rules/practices for software
development and maintenance
A Sample of CS areas
•
•
•
•
Distributed systems development
Computer game development
Financial transaction software
Search engine technologies
• Computer security
• Computer graphics
• Recommender systems
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 Development and Systems Analyst I
Computing Division, Fermilab, Batavia, IL
• Responsibility:
– participate in the design, coding, … and maintenance of CorralWMS
(a next generation grid).
• Requirements:
– Experience with software development … on UNIX/Linux platforms;
– Good knowledge of C/C++ or Java …. Working experience of python
– Excellent written and verbal communication skills;
– Experience with virtual environments and/or cloud computing;
• Education:
– Bachelor's degree
Computer Game development
• Game software development requires an
understanding of:
–
–
–
–
–
–
Mathematics
Computer graphics
Computer architecture
Operating systems
Network programming
Parallel processing
A sample job listing (excerpts)
Gameplay Programmer, High Voltage Software
Chicago, IL
• Responsibilities:
– Design and implement core gameplay components such as AI,
physics, character control, cameras, event systems, VFX, etc.
• Requirements:
– Deep knowledge of C/C++
– Excellent math and/or physics foundation
– Exceptional problem solving, debugging and troubleshooting skills
– Experience with scripting languages such as Ruby, Perl or Python
– Demonstrated knowledge of good software engineering practices
• Education:
– MS degree in Computer Science or related discipline desirable.
Financial Software Development
• Today, almost all financial transactions are done
electronically
• The financial services industry is constantly
working on improving the speed, scale, and
security of their transaction computer
applications.
A sample job listing (excerpts)
Java Intern – Fall, Chicago Mercantile Exchange
Chicago, IL
• Responsibilities:
– The intern will have the opportunity to learn about trading, clearing and
apply fundamental computer science algorithmic solutions to problems.
• Requirements:
– Prior Java programming knowledge/experience
– Excellent verbal and written communication skills
– Continuous learner and ability to work both independently and as a
team
• Education:
– Must be currently enrolled in school pursuing either a BS or MS in CS
Search Engine Technologies
• To handle information at the scale of the web requires ideas
from just about every area of computer science, including:
–
–
–
–
–
–
–
–
–
information retrieval,
artificial intelligence,
natural language processing,
distributed computing,
large-scale system design,
networking,
security,
data compression,
user interface design, etc.
(From Google’s Job Ad)
A sample job listing (excerpts)
Software Engineer, Google
Chicago,IL
• Responsibility:
– Write server-side code for web-based applications, … and develop
prototypes; … client application development for Chrome, Toolbar,
etc, … embedded systems and mobile apps (Android), …
• Requirements:
– A solid foundation in computer science, with strong competencies in
data structures, algorithms, and software design.
– Extensive programming experience in C/C++ and/or Java (strong OO
skills preferred). Coding skills in Python …, database design and
SQL, and/or knowledge of TCP/IP and network programming…
• Requirements:
– Degree in Computer Science
The Bachelor of Science in
Computer Science
• Mathematical tools
• Problem solving, algorithms, and
structured programming
• Modelling 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 user-friendly?
• 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.
Current Career Outcomes
Average starting
salary of a
2007 DePaul
CS graduate:
$55,313
Current Career Outcomes
Employment projections (BLS)
Table 2: Fastest-growing occupations, 200616
(Numbers in thousands)
Employment
2006 National Employment Matrix code and title
1
2
3
4
5
6
…
…2
3
24
25
26
27
2006
Change
2016
Percent
Number
Quartile rank by
2006 median
annual wages1
Most significant source of postsecondary education or training2
Network systems and data
communications analysts
262
40253.4
140 VH
Bachelor's degree
Personal and home care aides
767 1,15650.6
389 VL
Short-term on-the-job training
Home health aides
Computer software engineers,
applications
Veterinary technologists and
technicians
787 1,17148.7
384 VL
Short-term on-the-job training
507
73344.6
226 VH
Bachelor's degree
71
10041.0
29 L
Associate degree
Personal financial advisors
176
24841.0
72 VH
Bachelor's degree
25
3229.8
7 H
Dental assistants
280
36229.2
82 L
Computer systems analysts
504
65029.0
146 VH
Bachelor's degree
Database administrators
Computer software engineers,
systems software
119
15428.6
34 VH
Bachelor's degree
350
44928.2
99 VH
Bachelor's degree
Marriage and family therapists
Master's degree
Moderate-term on-the-job training
An opportunity … for the few
The number of students entering the CS field is at historical lows
=
More opportunities when you graduate
Shortages of CS professionals
Annual Degrees and Job Openings in Broad S&E Fields
160,000
140,000
PhD
Master's
120,000
Bachelor's
Projected Job Openings
100,000
80,000
60,000
40,000
20,000
Engineering
Physical Sciences
Mathematical/
Computer Sciences
Biological/
Agricultural Sciences
SOURCES: Tabulated by National Science Foundation/Division of Science Resources Statistics; degree data from Department of Education/National Center for Education Statistics: Integrated Postsecondary Education Data System Completions Survey; and NSF/S
Earned Doctorates; Projected Annual Average Job Openings derived from Department of Commerce (Office of Technology Policy) analysis of Bureau of Labor Statistics 2002-2012 projections
RS: Survey of
“Today, there simply aren’t enough people with the right skills to fill the growing demand for
computer scientists and engineers. This is a critical problem …” (Bill Gates, 02/19/2008)
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
What about the current recession?
• There are job losses in most industries, including IT…
However,
• “Amid the worst job market in 25 years, IT is holding
steady. Most CIOs are maintaining their current
staffing levels; while a few are hiring specialists who
have in-demand IT skills.”(NetworkWorld, March 2009)
• According to the Bureau of Labor Statistics, future job
prospects for computer science graduates are higher
than for any other science or engineering field.
So, why choose DePaul CS?
• A set of core courses that is continuously updated to
reflect technical developments in the field and industry
• A choice of more than 70 major electives, from Artificial
Intelligence to Web Server Operations
• CS faculty have PhDs from the top Research
Universities and now they are educating you.
• DePaul is a Teaching University; while CS faculty are
active in research, their first job is to teach you.
• DePaul is centrally located in the Loop with an amazing
choice of internship opportunities right outside the door.
So, why choose DePaul CS?
• 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.