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.