About the Major (CS at TAMU) 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. Keyser) ACE Scholars – CSE honors program (Dr. Welch) • Departmental seminars – M/W, 4:10, 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 • Upper-level electives (400) – Tracks: at least one from each • 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 Plan Your College Career! • It takes 126 hours to graduate – 126/8 = 15.75 hours a semester to graduate in 4 years – How many hours are you taking? • What courses will you take? When will you take those courses? • Have a plan (it may change) or you could easily stay in college longer than you think Example Schedule 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) – MATH 304 (lin alg) – STAT 211 – MATH 251 (vector calc) OR 302 (discrete math) OR 304 (diff eqns) 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 ... • Surface representations? Linear Algebra • Matrix calculations are useful for... – Transformations in Graphics – Scientific computing, e.g. finite element methods (0,0) ( w, h) Linear Algebra • Matrix calculations are useful for... – Transformations in Graphics – Scientific computing, e.g. finite element methods Linear Algebra • Matrix calculations are useful for... – Transformations in Graphics – Scientific computing, e.g. finite element methods 15 Fourier Transforms •Useful for analyzing/compressing images, sound files, speech recognition Fourier Transforms •Useful for analyzing/compressing images, sound files, speech recognition Fourier Transforms •Useful for analyzing/compressing images, sound files, speech recognition Fourier Fourier Transforms •Useful for analyzing/compressing images, sound files, speech recognition Fourier Fourier Transforms •Useful for analyzing/compressing images, sound files, speech recognition Fourier 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 Calculus • Physical simulation, light transport Calculus • Physical simulation, light transport 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, imaging, reconstruction – 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. Mathematics and Graphics Graphics is mathematics made visible Mathematics • Calculus • Linear Algebra • Differential Equations • Real Analysis • … Computer Science Data Structures Searching Asymptotic Analysis Parallel Computing … What are Fractals? • Recursion made visible What are Fractals? • Recursion made visible What are Fractals? • Recursion made visible What are Fractals? • Recursion made visible What are Fractals? • Recursion made visible Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals Rendering Fractals T1 T2 T3 Rendering Fractals T1 T1 T3 T2 T2 T3 Rendering Fractals T1 T1 T3 T2 T2 T3 Rendering Fractals T1 T1 T3 T2 T2 T3 Rendering Fractals T1 T1 T3 T2 T2 T3 Fractal Tennis Start with any point x For ( i=1; i<100; i++ ) x = Trandom(x) For ( i=1; i<100000; i++ ) draw(x) x = Trandom(x) Fractal Tennis Start with any point x For ( i=1; i<100; i++ ) x = Trandom(x) For ( i=1; i<100000; i++ ) draw(x) x = Trandom(x) Gets a point on the fractal Fractal Tennis Start with any point x For ( i=1; i<100; i++ ) x = Trandom(x) For ( i=1; i<100000; i++ ) draw(x) x = Trandom(x) Creates new points on the fractal Fractal Tennis – Example 25,000 Points Fractal Tennis – Example 50,000 Points Fractal Tennis – Example 75,000 Points Fractal Tennis – Example 100,000 Points Fractal Tennis – Example 125,000 Points Fractal Tennis – Example 150,000 Points More Fractals More Fractals More Fractals