570 likes | 813 Views
Today: About the CS Majors John Keyser. Upcoming Events/Important Dates. About the Major (CS at TAMU). Today’s Goal. Explain the rationale for the core course sequence/degree plan for majors.
E N D
Today: About the CS Majors John Keyser Upcoming Events/Important Dates
Today’s Goal • Explain the rationale for the core course sequence/degree plan for majors. • Establish expectations: be prepared for the rigor required in CPSC, especially the role of mathematics. • Explain that application of computer science is inherently multidisciplinary.
Advising in the CSE Department • Know your advisors (in EABA 100C) Jennifer Runnels Vivek Sarin Rick Furuta Maria Blandon Tara Dean (coming soon)
About the CS Department at TAMU • Departmental organizations • TACS – Texas A&M Computing Society • AWICS – Aggie Women in Computer Science • TAMUHack • TAGD – Texas Aggie Game Developers • AAIS – Aggie Artificial Intelligence Society • ACC – Aggie Coding Club • TAMU Cyber-Security • Departmental activities • Programming Competitions • Honors Program • 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 • BEWARE: some courses fill up! • 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
The Basic Philosophy – CSCE Classes • A core of basic courses • The fundamentals of computing • Required for both CPSC and COMP • Upper-level electives • CPSC: 7 courses, breadth requirement • COMP: 3 courses (any) • General Classes • CSCE 181, CSCE 481 • CSCE 482 (Capstone)
Standard Flow Through Core Courses CPSC: ENGR 102 - Python CSCE 121 Introduction to programming (C++) COMP: CSCE 110 – Python CSCE 111 – Java CSCE 206 – C CSCE 222 Discrete Structures for Computing CSCE 221 Data Structures and Algorithms CSCE 314 Programming Languages CSCE 312 Computer Organization CSCE 313 Intro to Computer Systems CSCE 315 Programming Studio CSCE 411 Analysis of Algorithms “systems” “theory” gateway to upper level 400-level electives
CPSC – Year 1 CPSC: ENGR 102 - Python CSCE 121 Introduction to programming (C++) COMP: CSCE 110 – Python CSCE 111 – Java CSCE 206 – C CSCE 222 Discrete Structures for Computing CSCE 221 Data Structures and Algorithms CSCE 314 Programming Languages CSCE 312 Computer Organization CSCE 313 Intro to Computer Systems CSCE 315 Programming Studio CSCE 411 Analysis of Algorithms “systems” “theory” gateway to upper level 400-level electives
CPSC – Semester 3 CPSC: ENGR 102 - Python CSCE 121 Introduction to programming (C++) COMP: CSCE 110 – Python CSCE 111 – Java CSCE 206 – C CSCE 222 Discrete Structures for Computing CSCE 221 Data Structures and Algorithms CSCE 314 Programming Languages CSCE 312 Computer Organization CSCE 313 Intro to Computer Systems CSCE 315 Programming Studio CSCE 411 Analysis of Algorithms “systems” “theory” gateway to upper level 400-level electives
CPSC – Semester 4 CPSC: ENGR 102 - Python CSCE 121 Introduction to programming (C++) COMP: CSCE 110 – Python CSCE 111 – Java CSCE 206 – C CSCE 222 Discrete Structures for Computing CSCE 221 Data Structures and Algorithms CSCE 314 Programming Languages CSCE 312 Computer Organization CSCE 313 Intro to Computer Systems CSCE 315 Programming Studio CSCE 411 Analysis of Algorithms “systems” “theory” gateway to upper level 400-level electives
CPSC – Semester 5 CPSC: ENGR 102 - Python CSCE 121 Introduction to programming (C++) COMP: CSCE 110 – Python CSCE 111 – Java CSCE 206 – C CSCE 222 Discrete Structures for Computing CSCE 221 Data Structures and Algorithms CSCE 314 Programming Languages CSCE 312 Computer Organization CSCE 313 Intro to Computer Systems CSCE 315 Programming Studio CSCE 411 Analysis of Algorithms “systems” “theory” gateway to upper level 400-level electives
CPSC – Semester 6+ CPSC: ENGR 102 - Python CSCE 121 Introduction to programming (C++) COMP: CSCE 110 – Python CSCE 111 – Java CSCE 206 – C CSCE 222 Discrete Structures for Computing CSCE 221 Data Structures and Algorithms CSCE 314 Programming Languages CSCE 312 Computer Organization CSCE 313 Intro to Computer Systems CSCE 315 Programming Studio CSCE 411 Analysis of Algorithms “systems” “theory” gateway to upper level 400-level electives
COMP – Semester 1 CPSC: ENGR 102 - Python CSCE 121 Introduction to programming (C++) COMP: CSCE 110 – Python CSCE 111 – Java CSCE 206 – C CSCE 222 Discrete Structures for Computing CSCE 221 Data Structures and Algorithms CSCE 314 Programming Languages CSCE 312 Computer Organization CSCE 313 Intro to Computer Systems CSCE 315 Programming Studio CSCE 411 Analysis of Algorithms “systems” “theory” gateway to upper level 400-level electives
COMP – Semester 2 CPSC: ENGR 102 - Python CSCE 121 Introduction to programming (C++) COMP: CSCE 110 – Python CSCE 111 – Java CSCE 206 – C CSCE 222 Discrete Structures for Computing CSCE 221 Data Structures and Algorithms CSCE 314 Programming Languages CSCE 312 Computer Organization CSCE 313 Intro to Computer Systems CSCE 315 Programming Studio CSCE 411 Analysis of Algorithms “systems” “theory” gateway to upper level 400-level electives
COMP – Semester 3 CPSC: ENGR 102 - Python CSCE 121 Introduction to programming (C++) COMP: CSCE 110 – Python CSCE 111 – Java CSCE 206 – C CSCE 222 Discrete Structures for Computing CSCE 221 Data Structures and Algorithms CSCE 314 Programming Languages CSCE 312 Computer Organization CSCE 313 Intro to Computer Systems CSCE 315 Programming Studio CSCE 411 Analysis of Algorithms “systems” “theory” gateway to upper level 400-level electives
COMP – Semester 4 CPSC: ENGR 102 - Python CSCE 121 Introduction to programming (C++) COMP: CSCE 110 – Python CSCE 111 – Java CSCE 206 – C CSCE 222 Discrete Structures for Computing CSCE 221 Data Structures and Algorithms CSCE 314 Programming Languages CSCE 312 Computer Organization CSCE 313 Intro to Computer Systems CSCE 315 Programming Studio CSCE 411 Analysis of Algorithms “systems” “theory” gateway to upper level 400-level electives
COMP – Semester 5 CPSC: ENGR 102 - Python CSCE 121 Introduction to programming (C++) COMP: CSCE 110 – Python CSCE 111 – Java CSCE 206 – C CSCE 222 Discrete Structures for Computing CSCE 221 Data Structures and Algorithms CSCE 314 Programming Languages CSCE 312 Computer Organization CSCE 313 Intro to Computer Systems CSCE 315 Programming Studio CSCE 411 Analysis of Algorithms “systems” “theory” gateway to upper level 400-level electives
COMP – Semester 6+ CPSC: ENGR 102 - Python CSCE 121 Introduction to programming (C++) COMP: CSCE 110 – Python CSCE 111 – Java CSCE 206 – C CSCE 222 Discrete Structures for Computing CSCE 221 Data Structures and Algorithms CSCE 314 Programming Languages CSCE 312 Computer Organization CSCE 313 Intro to Computer Systems CSCE 315 Programming Studio CSCE 411 Analysis of Algorithms “systems” “theory” gateway to upper level 400-level electives
Upper Level ElectivesTrack 1: Algorithms and Theory CSCE 411 (prereq C or better in 221, 222)__________ Analysis of Algorithms CSCE 433 (prereq 315)_________________________ Formal Languages and Automata CSCE 440 (prereq 315)_________________________ Quantum Algorithms CSCE 442# (prereq 221; coreq MATH 304 or 308)____ Scientific Programming
Upper Level ElectivesTrack 2: Systems CSCE 410*** (prereq 313, 315) __________ Operating Systems CSCE 412 (prereq C or better in 315) _____ Cloud Computing CSCE 416 (prereq 312 or 350)___________ Hardware Design Verification CSCE 456# (prereq 313, MATH 152)______ Real-Time Computing CSCE 461 (prereq 350 or 315)___________ Embedded Systems for Medical Applications CSCE 462 (prereq 313)_________________ Microcomputer Systems CSCE 463 (prereq 313)_________________ Networks & Distributed Prog. CSCE 464 (prereq 313)_________________ Wireless and Mobile Systems CSCE 465 (prereq 313 and 315)__________ Computer & Network Security CSCE 469# (prereq 350)________________ Advanced Computer Architecture
Upper Level ElectivesTrack 3: Software CSCE 429+ (prereq 315)____ Software Development, Globalization and Culture Abroad CSCE 430 (prereq 411)______ Problem Solving Programming Strategies CSCE 431 (prereq 315)______ Software Engineering CSCE 434 (prereq 315)______ Compiler Design CSCE 435 (prereq 315)______ Parallel Computing CSCE 438 (prereq 315)______ Distributed Objects Programming CSCE 451 (prereq 313)______ Software Reverse Engineering
Upper Level ElectivesTrack 4: Information and Intelligent Systems CSCE 310 (prereq 221, C or better)_______________ Database Systems CSCE 320 (prereq STAT 211, CSCE 222)__________ Principles of Data Science CSCE 420 (prereq 221**)_______________________ Artificial Intelligence CSCE 421 (prereq MATH 304, STAT 211, CSCE 221) Machine Learning CSCE 436 (coreq 315)_________________________ Computer-Human Interaction CSCE 441 (prereq 221)________________________ Computer Graphics CSCE 443 (prereq 441)________________________ Game Development CSCE 444 (prereq 315)________________________ Structures of Interactive Information CSCE 445 (prereq 221)________________________ Computers and New Media CSCE 446 (prereq C or better in 221 or 441)_______ Virtual Reality CSCE 447 (prereq C or better in 221 or 441)_______ Data Visualization CSCE 452 (prereq 315)________________________ Robotics and Spatial Intelligence CSCE 470 (prereq 315)________________________ Information Storage and Retrieval
Upper Level ElectivesUntracked Electives (7th Elective) CSCE 402 ______________________________ Law & Policy in Cybersecurity CSCE 477 (prereq CSCE/CYBR 201)_________ Cybersecurity Risk • For CPSC, the 7th elective can be from one of several options, in addition to a “tracked” elective. The courses above are options, as are: • Undergraduate Research (CSCE 491) • Directed Study (CSCE 485) • Co-Op (1 hour per semester; do 3 times to get a “full” course credit)
Other CSCE Class Options • “Fast Track” classes: • Take the graduate version of an undergraduate class. Get graduate credit and get credit-by-exam for the undergrad class. • GPA limitations; must file petition • CSCE 489: • Special Topics classes; could be anything • Not (yet?) a “permanent” course • Not offered on a planned schedule • Often, they DO count in a track
Other Classes • Science classes • CPSC: 14 credits • PHYS, CHEM, BIOL, or GEOS • Be sure to take from the approved lists • COMP: 9 credits • Any meeting the University core curriculum requirements • Communication: • CPSC: 2 courses required • ENGL 104 • 1 of: (ENGL 210, COMM 203, COMM 205) • COMP: 3 courses required • ENGL 103 or 104 • 1 of: ENGL 203, ENGL 210, ENGL 241 • 1 of: COMM 203, COMM 205, COMM 243 • University Core Curriculum • All other options are basically “open” to meet UCC requirements • Be sure to meet the ICD/Cultural Discourse requirements along the way
Role of Mathematics in Comp. Sci. • Mathematical analysis plays a vital role in many computational systems...so be prepared for it. • CSCE 222 (Discrete Structures for Computing) is a math-like course • Current requirements (CPSC): • MATH 151, 152 (calc) • MATH 304 (linalg) • STAT 211 • MATH 251 (vector calc) OR 302 (discrete math) OR 308 (diff eqns) • COMP: Just 2 math courses • 1 Calculus course, • 1 more from prescribed list
Asymptotic Analysis • “Big-O” analysis • One of the most critical ways of analyzing, talking about programs and algorithms • As the size of a problem increases, how do the resources (time, memory) increase? • The “simple” cases you develop on may not scale well to the giant cases you have to run on! • Should become a natural part of your vocabulary and thinking
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/Robotics • Scientific computing, e.g. finite element methods • Machine Learning (representing how neural nets work/connect) • Graph algorithms • Information retrieval/recommenders (e.g. page rank) • Signal Processing and Compression • Cryptography • Etc.
Linear Algebra • Matrix calculations are useful for... • Transformations in Graphics
Linear Algebra • Matrix calculations are useful for... • Transformations in Graphics
Linear Algebra • Matrix calculations are useful for... • Scientific computing, e.g. finite element methods 35
Fourier Transforms • Useful for analyzing/compressing images, sound files, speech recognition Image from: https://northstar-www.dartmouth.edu/doc/idl/html_6.2/Filtering_an_Imagehvr.html
Fourier Transforms • Useful for analyzing/compressing images, sound files, speech recognition Image from: https://northstar-www.dartmouth.edu/doc/idl/html_6.2/Filtering_an_Imagehvr.html
Fourier Transforms • Useful for analyzing/compressing images, sound files, speech recognition Fourier Image from: https://northstar-www.dartmouth.edu/doc/idl/html_6.2/Filtering_an_Imagehvr.html
Fourier Transforms Fourier Transforms • Useful for analyzing/compressing images, sound files, speech recognition Fourier Image from: https://northstar-www.dartmouth.edu/doc/idl/html_6.2/Filtering_an_Imagehvr.html
Fourier Transforms Fourier Transforms • Useful for analyzing/compressing images, sound files, speech recognition Fourier Image from: https://northstar-www.dartmouth.edu/doc/idl/html_6.2/Filtering_an_Imagehvr.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
Calculus • Physical simulation, light transport
Calculus • Physical simulation, light transport
Supporting/Concentration Area • What is this thing? • CPSC: 12 Credit Supporting Area • COMP: 29 Credit Concentration Area
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
Supporting/Concentration Area • Not just a set of random classes! • Should be a coordinated set of courses with relationship to computing • CPSC: Several approved tracks, but you are not limited to those; can propose one yourself • COMP: Most people will design their own concentration area • Can use toward minor(s)/double major or degree, etc.
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
your interest is your own, but think about how it involves computation... • More application areas: • 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