About the Major - TAMU Computer Science Faculty Pages

advertisement
Main Points
• Explain the rationale for the core course
sequence/degree plan for majors.
• Establish expectations: be prepared for
the rigor required in this major, especially
the role of mathematics
• Explain that application of computer
science is inherently multidisciplinary.
About the CS department at TAMU
• know your advisors (in 325 Teague)
Dr. Vivek Sarin
Dr. Richard Furuta
• departmental organizations
–
–
–
–
AWICS – Aggie Women in Computer Science (Dr. Amato)
TACS – Texas A&M Computing Society (ACM chapter)
TAGD – Texas Aggie Game Developers (Dr. Schaeffer)
ACE Scholars – CS honors program (Dr. Amato)
• departmental seminars
– typically M/W, 4:10, in 124 HRBB
– watch for Distinguished Lecturers
Be Resourceful
• degree plan, requirements, and course catalog
(pre-reqs) available on web
– beware: not all courses are offered every semester
• CSCE department resources
– computer accounts, email, labs...
• TAMU resources
– library, SELL (software licenses for students)
• be aware of expected course offerings on web
• ask questions of...
– your peers
– the faculty
CSCE 110 – Python
CSCE 111 – Java
CSCE 206 – C
CSCE 121
Introduction to programming (C++)
CSCE 221 - Data Structures and
Algorithms
CSCE 222 - Discrete Structures
for Computing
CSCE 312
Computer Organization
CSCE 314
Programming Languages
CSCE 313
Intro to Computer Systems
CSCE 315
Programming Studio
“systems”
(or
ENGR 112+CSCE 113
for CECN)
gateway to upper level
400-level electives
CSCE 411
Analysis of Algorithms
“theory”
Other classes
• seminars: 181, 481 (prep for internships)
• upper-level electives (400)
– tracks, no more breadth requirement
• science classes (16 cr.)
– PHYS, CHEM, BIOL, or GEOS
• supporting area (12 cr.)
– could be any interest area: math, business, music....
– must have a “computational” connection
• Capstone (CSCE 482/483)
– team-based projects
• ENGR 482 – Engineering Ethics
Role of Mathematics in Computer
Science
• Mathematical analysis plays a vital role in
many computational systems...so be
prepared for it.
• current requirements:
– MATH 151, 152 (calc), 302 (discr. math),
– MATH 304 (lin. alg.) OR 308 (diff eqns)
– STAT 211
– starting in 2014, degree planes will make 304
(linear alg.) required and 302 (discrete math)
optional
Combinatorics
• Solving recurrence relations to estimate run-time
complexity
for (i=0 ; i<n ; i++)
for (j=0 ; j<i ; j++)
<do something>
i=0:
i=1: j=0
i=2: j=0, j=1
i=3: j=0, j=1, j=2
...
• how many nodes are in a binary tree with n levels?
1
n=5 levels
2
4
8
16
----31
another example:
cryptography is all
number theory and
group theory
Linear algebra
• Matrix calculations are useful for...
– perspective transformations Graphics
– Scientific computing, e.g. solving heat
equation by finite element methods
 x


 x'   1 0 0 0  
 
y

 y '    0 1 0 0  
 w'   0 0  1 0  z 
  
d  1 
(borrowed from Dr. Jinxiang Chai)
10
Fast-Fourier Transforms (FFTs)
• useful for analyzing/compressing images,
sound files, speech recognition
FFT is an efficient O(N log N) algorithm for
computing these coefficients, ak
signal: [x1,x2...,xN]
FFT
coeffs: [a1,a2...,aN]
adapted from: http://www.mathworks.com/help/matlab/ref/fft.html
Statistics
• compare performance of algorithms using empirical
experiments
• evaluate performance of system under different loads
• data analysis - finding trends, predictive models
• distributions
– Binomial, Gamma, Poisson, Gaussian
• parameter estimation
example: given a series of user response-times,
what is the Maximum-Likelihood estimate of l in
the Poisson distribution?
note for next time: another illustrative example would be use
of Newton’s method to calculate square roots
• Is Calculus (integral/differential equations)
ever used in Computer Science?
– Yes, for example in queuing theory, estimating
network delays
– can use this to determine maximum service
times, required queue length, etc.
from V. Rego (1986). Characterisations of Equilibrium Queue Length Distributions in M/G/1 Queues.
docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1533&context=cstech
The Multidisciplinary Nature of
Computer Science
• Sometimes, CS may feel like a branch of
mathematics (combinatorics, proofs of
correctness, analysis of complexity...)
• However, CS becomes important to
society when it is applied to real-world
problems
• Information Technology is pervasive
– computation, simulation, connectivity
– meteorology, health care, construction,
mapping, oil industry, pharmaceuticals,
communication, financial markets,
entertainment, even the military
• more fields are becoming ‘data-centric’
– digitization
– amassing huge databases (petabytes)
– many jobs in software industry focus on
processing/analyzing this data
– “Data Science” - databases, search, machine
learning, statistics, pattern recognition
• Each application area has its own lingo
– domain concepts, like anatomy/physiology...
– types of data, format, sources of error
• Software engineers must learn how to
communicate with customers
– to understand users’ needs in that field
– This is why we encourage you to develop an
orthogonal interest in a “supporting area”
• Since users don’t understand what things are
possible/impossible with computers, we have to
help guide the design
– if we don’t use and understand their terminology, they
won’t respect us, and nothing gets done
• more application areas:
your interest is your own, but think
about how it involves computation...
– business processes, quantitative trading
– music – MIDI format, synthetic music, sound
synthesis, filtering
– biology – genomes, metabolic pathways,
protein interactions, regulatory networks
– archeology – cataloging of artifacts,
searching, identifying patterns
– automobile design – engine controllers for fuel
efficiency/power, heat, emissions,
manufacturing
– aerospace engineering - fluid dynamics and
airfoil design, air-traffic control (congestion,
routing), automation and displays in cockpit
• Another example: Interface Design (GUIs)
and Cognitive Science
– in order to design good interfaces, it helps to
understand how people think
– how do they respond to different visual inputs?
e.g. button size, color, placement
– should have a “cognitive model” of what tasks
they might be doing and what questions they
might have
– cognitive factors that impact software usage:
• attention, interference between perceptual modalities
• limits on short-term memory
• consistency – e.g. meaning of buttons like “submit”
and “cancel”
• fatigue, distraction, expectation biases...
Summary
• The course sequence focuses on learning data
structures and algorithms at the lower level
(along with systems and programming)
• Based on this foundation, you can take many
upper-level electives.
• Be prepared for the rigor required in this major.
Many topics in CS require mathematics.
• Computer science is inherently multidisciplinary,
and it is important to learn the concepts and
terminology in an application area.
Download