Problem:
Not enough resources and contributions on extra courses and readings.
Background:
In July, 2 months ago was the last time someone contributed adding resources to courses or readings.
Having a single visible page out of the extras folder with all the resources sorted by the knowledge areas stablished in the Curriculum Guidelines will facilitate community contributions.
Proposal:
Merge Readings.md and Courses.md into Resources.md outside of the extras folder to increase visibility, understanding and community contribution of resources. I added all courses, readings and more into a Resources.md draft on the next comment.
Alternatives:
This is a list of high-quality resources, they are systematically arranged according to the knowledge areas stablished in the Curriculum Guidelines for Undergraduate Programs in Computer Science with their recommended 308 lecture hours.
Develop effective ways to solve computing problems.
| Knowledge Area | H | % | Core Courses | Prerequisites |
|:--|:--|:--|:--|:--|
| SDF - Software Development Fundamentals | 43 | 14 | Python for Everbody & CS50 | none
| PL - Programming Languages | 28 | 9 | Programming Languages A-B-C | SDF
| SP - Social and Professional Practice | 16 | 5 | Learning How to Learn | none
| DS - Discrete Structures | 41 | 5 | 1 Calculus A-B-C, Probab. & CS Math | high school
| CN - Computational Science | 1 | .3 | Computer Science |DS AL
| AL - Algorithms and Complexity | 28 | 9 | Algorithms | SDF PL DS
Devise ways to use computers.
| SF - Systems Fundamentals | 27 | 9 | Nand to Tetris I & II | SDF
|:--|:--|:--|:--|:--|
| IM - Information Management | 10 | 3 | Relational, Modeling & Semistructured | none
| NC - Networking and Communications | 10 | 3 | Computer Networking | SDF DS
| AR - Architecture and Organization | 16 | 5 | Circuits, Architecture & Organization | SF
| OS - Operating Systems | 15 | 5 | Intro to Operating Systems | AL |
| IS - Intelligent Systems | 10 | 3 | Artificial Intelligence & Machine Learning | Linear Algebra
Design and implement software.
| SE - Software Engineering | 28 | 9 | Compilers, Debugging & Testing | SDF PL
|:--|:--|:--|:--|:--|
| IAS - Information Assurance and Security | 9 | 3 | Secure Coding Practices | SDF
| HCI - Human-Computer Interaction | 4 | 1 | Software Architecture & Design | SDF PL
| PD - Parallel and Distributed Computing | 15 | 5 | Parallel Programming | SDF PL DS
| GV - Graphics and Visualization | 3 | 1 | Computer Graphics | Linear Algebra
| PBD - Platform-based Development | 0 | 0 | Introduction to Haskell | SDF PL
Knowledge Units: Algorithms and Design Fundamental Programming concepts Fundamental Data structures Development Methods
| Courses | Readings and Other |
|---|---|
| Python for Everbody | Structure of Programs - Hal Abelson...
| Intro to CS - CS50 | How to Design Programs - Matthias Felleisen...
|Intro to CS and Programming| Think Python 2e - Allen B. Downey
|Fundamentals of Computing| Googles's Foundations of Programming
|How to Code 1 2| 100+ Python Coding Problems
|Computer Fundamentals| Codingame.com
|Computer Programming Khan | Intro to Programming - John V. Guttag
|Java Programming| Concepts of Programming - Peter Van Roy...
|Computing In Python | MDN HTML CSS JavaScript
|Programming Basics | You Don't Know JS 1 2 3
|Computing In Python | Awesome for beginners |
|Programming Basics | Rosalind|
|CS50's Understanding Tech. | Intro to CS saylor.org
Knowledge Units: Object Oriented programming Functional Programming Event-Driven and Reactive Programming Basic Type Systems Program Representation Language Translation and Execution Syntax Analysis Compiler Semantic Analysis Code Generation Runtime Systems Static Analysis Advanced Programming Constructs Concurrency and Parallelism Type Systems Formal Semantics Language Pragmatics Logic Programming
| Courses | Readings and Other |
|---|---|
| Pogramming Languages A B C | Programming Languages - Shriram Krishnamurthi
| CS50 Web | Programming - Shriram Krishnamurthi...
| Interactive Programming 1 2 | Competitive Programming - Steven Halim...
| Object Oriented Programming with Java | Design Patterns - Erich Gamma...
| Programming with MATLAB | Refactoring - Martin Fowler
| Functional Programming | Clean Code - Robert Martin
| Interpretation of Computer Programs | Code Complete 2e - Steve McConnell
| |The Pragmatic Programmer - Andrew Hunt...
| |JavaScript Allong茅
| |D2 Tips and Tricks
| |Think Java
Knowledge Units: Sets, Relations, and Functions Basic Logic Proof Techniques Basics of Counting Graphs and Trees Discrete Probability
| Courses | Readings and Other |
|---|---|
| 1 Calculus A B C | Discrete Mathematics: An Open Introduction - Oscar Levin
Probability | Applied Discrete Structures - Alan Doerr, Ken Levasseur
Math for CS | Grinstead and Snell鈥檚 Probability - Charles M. Grinstead...
Introduction to Logic | Introduction to Linear Algebra - Gilbert Strang
Discrete Mathematics | Calculus Made Easy - Silvanus P. Thompson
Effective Thinking Through Mathematics | Interactive Calculus Textbooks Ximera team
Mathematical Thinking | Ximera
Multivariable Calculus | Probability Brilliant |
Advanced Precalculus | Calculus Brilliant |
Introduction to Probability and Data | Discrete Structures saylor.org
Introduction to Probability Science | Calculus Khan
Introduction to Mathematical Thinking | Probability Khan
High School Math | Sets
Precalculus | How to learn Math
Differential Equations |
Knowledge Units: Social Context Analytical Tools Professional Ethics Intellectual Property Privacy and Civil Liberties Professional Communication Sustainability History Economies of Computing Security Policies, Laws and Computer Crimes
| Courses | Readings and Other |
|---|---|
| Learning How to Learn | Learning in a Digital Age saylor.org
| Mindshift|
Knowledge Units: Introduction to Modeling and Simulation Modeling and Simulation Processing Interactive Visualization Data, Information and knowledge Numerical Analysis
| Courses | Readings and Other |
|---|---|
| Computer Science | Computer Science - Robert Sedgewick and Kevin Wayne
| Theory of Computation | Introduction to the Theory of Computation
|Introduction to Computational Thinking
Knowledge Units: Basic Analysis Algorithmic Strategies Fundamental Data Structures and algorithms Basic Automata, Computability and Complexity Advanced Computational Complexity Advanced Automata Theory and computability Advanced Data Structures, Algorithms and analysis
| Courses | Readings and Other |
|---|---|
| Algorithms | Visual Algo
| Algorithms I II | Algorithms - Robert Sedgewick and Kevin Wayne
| Data Structures and Algorithms | Analysis of Algorithms - Robert Sedgewick and Phillipe Flajolet
| Analysis of Algorithms (Sedgewick) | Introduction to Computing - David Evans
| Algorithms Khan | Introduction to Algorithms - Thomas H. Cormen...
| Intro to Algorithms 1 2 | Algorithms and Data Structures Freecodecamp
| Analysis of Algorithms (Skiena) | Fundamentals of algorithms - Geeksforgeeks
| Algorithmic Thinking 1 2 | The Algorithm Design Manual - Steven Skiena
| Statistical Mechanics: Algorithms and Computations | Category Theory: A Gentle Introduction - Peter Smith
| Approximation Algorithms I II | Category Theory for Programmers - Bartosz Milewski
| Intro to Algorithms | Open Data Structures
| Complexity Algorithms |
| Design and Analysis Algorithms |
Knowledge Units: Computational Paradigms Cross-Layer Communications State and State Machines Parallelism Evaluation Resource Allocation adn Scheduling Proximity Virtualization adn Isolation Reliability through Redundancy Quantitative Evaluation
| Courses | Readings and Other |
|---|---|
| Nand to Tetris I II | But How Do It Know? - J. Clark Scott |
| Intro to Computer Systems | Computer Systems - Randal E. Bryant... |
| | System Design - Various
Knowledge Units: Information Management Concepts Database Systems Data Modeling Indexing Relational Databases Query Languages Transaction Processing Distributed Databases Physical Database Design Data Mining Information Storage And Retrieval MultiMedia Systems
| Courses | Readings and Other |
|---|---|
| Database Systems 1 2 3| Readings in Database Systems - Peter Bailis... |
| Relational Database Systems | Database Management Systems - Raghu Ramakrishnan...
| Database Systems | Transaction Processing: Concepts and Techniques - Jim Gray...
| Using Databases with Python | Data and Reality - William Kent...
| Database Management Essentials | An Introduction to Information Retrieval - Christopher D. Manning
| Processing Big Data with Azure HDInsight | An Introduction to Statistical Learning - Gareth James
| Big Data Science | Architecture of a Database System - Joseph M. Hellerstein...
| Introduction Data Science | DBMS Geeksforgeeks
| Database Concepts and Design | Intro to Database Systems saylor.org
| Relational Databases |
| Big Data (Specialization) |
| Data Science (Specialization) |
| Data Mining (Specialization) |
Knowledge Units: Introduction Networked Applications Reliable Data Delivery Routing And Forwarding Local Area Networks Resource Allocation Mobility Social Networking
| Courses | Readings and Other |
|---|---|
| Computer Networking | Computer Networks (5th) - Andrew S. Tanenbaum |
| Introduction to Computer Networking | Computer Networking (6th) - James F Kurose
| Bits and Bytes Networking | Communications and Networks saylor.org
Knowledge Units: Digital Logic and Digital Systems Machine Level Representation of Database Assembly Level Machine Organization Memory System Organization and architecture Interfacing and Communication Functional Organization Multiprocessing and Alternative Architectures Performance Enhancements
| Courses | Readings and Other |
|---|---|
| Computation Structures 1 2 3 | Computer Organization and Design - David Patternson...
| Computer Architecture | Computation Architecture saylor.org
| Computer Architecture (Machine Structures) | Computation Architecture geeksforgeeks
| Introductory Electricity and Magnetism |
| Electricity and Magnetism 1 2 |
Knowledge Units: Overview of Operating Systems Operating System Principles Concurrency Scheduling and Dispatch
Memory Management Security and Protection Virtual Machines Device Management File Systems Real Time and Embedded Systems Fault Tolerance System Performance Evaluation
| Courses | Readings and Other |
|---|---|
| Operating Systems: Three Easy Pieces | Operating Systems (4th) - Andrew S. Tanenbaum... | Operating Systems saylor.org
| Operating System Engineering | Operating Systems Geeksforgeeks
| Introduction to Operating Systems | Operating Systems saylor.org
| Advanced Operating Systems |
| Os Power User |
| Computer Hardware and Operating Systems |
Knowledge Units: Fundamental Issues Basic Search Strategies Basic Knowledge Representation and Reasoning Basic Machine Learning Advanced Search Reasoning Under Uncertainty Agents Natural Language Processing Advanced Machine Learning Robotics Perception and Computer Vision
| Courses | Readings and Other |
|---|---|
|Machine Learning |Deep Learning - Ian Goodfellow...
|CS50AI | Machine Learning - David Barber
|Game Theory | Machine Learning Geeksforgeeks
|Intro to Artificial Intelligence |Machine Learning with Python freecodecamp
|Intro to Machine Learning
|Machine Learning for Data Science and Analytics
|Modern Robotics
Knowledge Units: Software Processes Software Project Management Tools and Environments Requirements Engineering Software Design Software Construction Software Verification and Validation Software Evolution Software Reliability Formal Methods
| Courses | Readings and Other |
|---|---|
| Compilers | How to Use Git and GitHub
| Software Debugging | Kubernetes Certified Application Developer
| Software Testing | The Mythical Man-Month - Fred Brooks, Jr.
| The Missing Semester of CS | Compilers - Alfred V. Aho...
| Software Engineering: Introduction | Compiler Construction - Niklaus Wirth
| Software Development Capstone Project | 97 Things Every Programmer Should Know
| Software Construction | Hacker Earth
| Structure and Interpretation | Coursera Guided Projects
| | Software Engineering Geeksforgeeks
Knowledge Units: Foundational Concepts in Security Principles of Secure Design Defensive Programming Threats and Attacks Network Security Cryptography Web Security Platform Security Security Policy and Governance Digital Forensics Secure Software Engineering
| Courses | Readings and Other |
|---|---|
| Secure Coding Practices | Information Security Certification
| Information Security: Context and Introduction |
| Principles of Secure Coding |
| Identifying Security Vulnerabilities |
| Identifying Security Vulnerabilities in C/C++Programming |
| Exploiting and Securing Vulnerabilities in Java Applications |
Knowledge Units: Foundations Design Interaction Programming Interactive Systems User Centered Design and Testing New Interactive Technologies Collaboration and Communication Statistical Methods for HCI Human Factors and Security Design Oriented HCI Mixed, Augmented and Virtual Reality
| Courses | Readings and Other |
|---|---|
| Software Architecture & Design | |
| Internet of Things|
Knowledge Units: Parallelism Fundamentals Parallel Decomposition Communication and Coordination Parallel Algorithms, Analysis, and Programming Parallel Architecture Parallel Performance Distributed Systems Cloud Computing Formal Models and Semantics
| Courses | Readings and Other |
|---|---|
| Parallel Programming | Distributed Systems - Andrew Tanenbaum...
| Cloud Computing / Distributed Programming | Distributed Systems Reading Group - Various
| Introduction to Parallel Programming |
| Introduction to Formal Concept Analysis |
| Parallel, Concurrent and Distributed Programming |
| Fundamentals of Parallelism on Intel Architecture |
| Distributed Computing |
| Git for Distributed Development |
Knowledge Units: Fundamental Concepts Basic Rendering Geometric Modeling Advanced Rendering Computer Animation Visualization
| Courses | Readings and Other |
|---|---|
| Computer Graphics | Physically Based Rendering - Matt Pharr...
| Computational Geometry|
Knowledge Units: Introduction Web Platforms Mobile Platforms Industrial Platforms Game Platforms
| Courses | Readings and Other |
|---|---|
| Introduction to Haskell | Open Source Applications - Michael DiBernardo |
| Functional Programming in Scala | Language Implementation Patterns - Terence Parr
| Game Design and Development | The Google Android Development Guide
| Fullstack Open |
I like the way this is organized. It makes it easy to find something if you're looking for something specific.
Most helpful comment
Resources
This is a list of high-quality resources, they are systematically arranged according to the knowledge areas stablished in the Curriculum Guidelines for Undergraduate Programs in Computer Science with their recommended 308 lecture hours.
Theory
| Knowledge Area | H | % | Core Courses | Prerequisites |
|:--|:--|:--|:--|:--|
|
SDF - Software Development Fundamentals| 43 | 14 | Python for Everbody & CS50 | none|
PL - Programming Languages| 28 | 9 | Programming Languages A-B-C |SDF|
SP - Social and Professional Practice| 16 | 5 | Learning How to Learn | none|
DS - Discrete Structures| 41 | 5 | 1 Calculus A-B-C, Probab. & CS Math | high school|
CN - Computational Science| 1 | .3 | Computer Science |DSAL|
AL - Algorithms and Complexity| 28 | 9 | Algorithms |SDFPLDSSystems
|
SF - Systems Fundamentals| 27 | 9 | Nand to Tetris I & II |SDF|:--|:--|:--|:--|:--|
|
IM - Information Management| 10 | 3 | Relational, Modeling & Semistructured | none|
NC - Networking and Communications| 10 | 3 | Computer Networking |SDFDS|
AR - Architecture and Organization| 16 | 5 | Circuits, Architecture & Organization |SF|
OS - Operating Systems| 15 | 5 | Intro to Operating Systems |AL||
IS - Intelligent Systems| 10 | 3 | Artificial Intelligence & Machine Learning | Linear AlgebraApplications
|
SE - Software Engineering| 28 | 9 | Compilers, Debugging & Testing |SDFPL|:--|:--|:--|:--|:--|
|
IAS - Information Assurance and Security| 9 | 3 | Secure Coding Practices |SDF|
HCI - Human-Computer Interaction| 4 | 1 | Software Architecture & Design |SDFPL|
PD - Parallel and Distributed Computing| 15 | 5 | Parallel Programming |SDFPLDS|
GV - Graphics and Visualization| 3 | 1 | Computer Graphics | Linear Algebra|
PBD - Platform-based Development| 0 | 0 | Introduction to Haskell |SDFPLSDF - Software Development Fundamentals
Knowledge Units:
Algorithms and DesignFundamental Programming conceptsFundamental Data structuresDevelopment Methods| Courses | Readings and Other |
|---|---|
| Python for Everbody | Structure of Programs - Hal Abelson...
| Intro to CS - CS50 | How to Design Programs - Matthias Felleisen...
|Intro to CS and Programming| Think Python 2e - Allen B. Downey
|Fundamentals of Computing| Googles's Foundations of Programming
|How to Code 1 2| 100+ Python Coding Problems
|Computer Fundamentals| Codingame.com
|Computer Programming Khan | Intro to Programming - John V. Guttag
|Java Programming| Concepts of Programming - Peter Van Roy...
|Computing In Python | MDN HTML CSS JavaScript
|Programming Basics | You Don't Know JS 1 2 3
|Computing In Python | Awesome for beginners |
|Programming Basics | Rosalind|
|CS50's Understanding Tech. | Intro to CS saylor.org
PL - Programming Languages
Knowledge Units:
Object Oriented programmingFunctional ProgrammingEvent-Driven and Reactive ProgrammingBasic Type SystemsProgram RepresentationLanguage Translation and ExecutionSyntax AnalysisCompiler Semantic AnalysisCode GenerationRuntime SystemsStatic AnalysisAdvanced Programming ConstructsConcurrency and ParallelismType SystemsFormal SemanticsLanguage PragmaticsLogic Programming| Courses | Readings and Other |
|---|---|
| Pogramming Languages A B C | Programming Languages - Shriram Krishnamurthi
| CS50 Web | Programming - Shriram Krishnamurthi...
| Interactive Programming 1 2 | Competitive Programming - Steven Halim...
| Object Oriented Programming with Java | Design Patterns - Erich Gamma...
| Programming with MATLAB | Refactoring - Martin Fowler
| Functional Programming | Clean Code - Robert Martin
| Interpretation of Computer Programs | Code Complete 2e - Steve McConnell
| |The Pragmatic Programmer - Andrew Hunt...
| |JavaScript Allong茅
| |D2 Tips and Tricks
| |Think Java
DS - Discrete Structures
Knowledge Units:
Sets, Relations, and FunctionsBasic LogicProof TechniquesBasics of CountingGraphs and TreesDiscrete Probability| Courses | Readings and Other |
|---|---|
| 1 Calculus A B C | Discrete Mathematics: An Open Introduction - Oscar Levin
Probability | Applied Discrete Structures - Alan Doerr, Ken Levasseur
Math for CS | Grinstead and Snell鈥檚 Probability - Charles M. Grinstead...
Introduction to Logic | Introduction to Linear Algebra - Gilbert Strang
Discrete Mathematics | Calculus Made Easy - Silvanus P. Thompson
Effective Thinking Through Mathematics | Interactive Calculus Textbooks Ximera team
Mathematical Thinking | Ximera
Multivariable Calculus | Probability Brilliant |
Advanced Precalculus | Calculus Brilliant |
Introduction to Probability and Data | Discrete Structures saylor.org
Introduction to Probability Science | Calculus Khan
Introduction to Mathematical Thinking | Probability Khan
High School Math | Sets
Precalculus | How to learn Math
Differential Equations |
SP - Social Issues and Professional Practice
Knowledge Units:
Social ContextAnalytical ToolsProfessional EthicsIntellectual PropertyPrivacy and Civil LibertiesProfessional CommunicationSustainabilityHistoryEconomies of ComputingSecurity Policies, Laws and Computer Crimes| Courses | Readings and Other |
|---|---|
| Learning How to Learn | Learning in a Digital Age saylor.org
| Mindshift|
CN - Computational Science
Knowledge Units:
Introduction to Modeling and SimulationModeling and SimulationProcessingInteractive VisualizationData, Information and knowledgeNumerical Analysis| Courses | Readings and Other |
|---|---|
| Computer Science | Computer Science - Robert Sedgewick and Kevin Wayne
| Theory of Computation | Introduction to the Theory of Computation
|Introduction to Computational Thinking
AL - Algorithms and Complexity
Knowledge Units:
Basic AnalysisAlgorithmic StrategiesFundamental Data Structures and algorithmsBasic Automata, Computability and ComplexityAdvanced Computational ComplexityAdvanced Automata Theory and computabilityAdvanced Data Structures, Algorithms and analysis| Courses | Readings and Other |
|---|---|
| Algorithms | Visual Algo
| Algorithms I II | Algorithms - Robert Sedgewick and Kevin Wayne
| Data Structures and Algorithms | Analysis of Algorithms - Robert Sedgewick and Phillipe Flajolet
| Analysis of Algorithms (Sedgewick) | Introduction to Computing - David Evans
| Algorithms Khan | Introduction to Algorithms - Thomas H. Cormen...
| Intro to Algorithms 1 2 | Algorithms and Data Structures Freecodecamp
| Analysis of Algorithms (Skiena) | Fundamentals of algorithms - Geeksforgeeks
| Algorithmic Thinking 1 2 | The Algorithm Design Manual - Steven Skiena
| Statistical Mechanics: Algorithms and Computations | Category Theory: A Gentle Introduction - Peter Smith
| Approximation Algorithms I II | Category Theory for Programmers - Bartosz Milewski
| Intro to Algorithms | Open Data Structures
| Complexity Algorithms |
| Design and Analysis Algorithms |
SF - Systems Fundamentals
Knowledge Units:
Computational ParadigmsCross-Layer CommunicationsState and State MachinesParallelismEvaluationResource Allocation adn SchedulingProximityVirtualization adn IsolationReliability through RedundancyQuantitative Evaluation| Courses | Readings and Other |
|---|---|
| Nand to Tetris I II | But How Do It Know? - J. Clark Scott |
| Intro to Computer Systems | Computer Systems - Randal E. Bryant... |
| | System Design - Various
IM - Information Management
Knowledge Units:
Information Management ConceptsDatabase SystemsData ModelingIndexingRelational DatabasesQuery LanguagesTransaction ProcessingDistributed DatabasesPhysical Database DesignData MiningInformation Storage And RetrievalMultiMedia Systems| Courses | Readings and Other |
|---|---|
| Database Systems 1 2 3| Readings in Database Systems - Peter Bailis... |
| Relational Database Systems | Database Management Systems - Raghu Ramakrishnan...
| Database Systems | Transaction Processing: Concepts and Techniques - Jim Gray...
| Using Databases with Python | Data and Reality - William Kent...
| Database Management Essentials | An Introduction to Information Retrieval - Christopher D. Manning
| Processing Big Data with Azure HDInsight | An Introduction to Statistical Learning - Gareth James
| Big Data Science | Architecture of a Database System - Joseph M. Hellerstein...
| Introduction Data Science | DBMS Geeksforgeeks
| Database Concepts and Design | Intro to Database Systems saylor.org
| Relational Databases |
| Big Data (Specialization) |
| Data Science (Specialization) |
| Data Mining (Specialization) |
NC - Networking and Communications
Knowledge Units:
IntroductionNetworked ApplicationsReliable Data DeliveryRouting And ForwardingLocal Area NetworksResource AllocationMobilitySocial Networking| Courses | Readings and Other |
|---|---|
| Computer Networking | Computer Networks (5th) - Andrew S. Tanenbaum |
| Introduction to Computer Networking | Computer Networking (6th) - James F Kurose
| Bits and Bytes Networking | Communications and Networks saylor.org
AR - Architecture and Organization
Knowledge Units:
Digital Logic and Digital SystemsMachine Level Representation of DatabaseAssembly Level Machine OrganizationMemory System Organization and architectureInterfacing and CommunicationFunctional OrganizationMultiprocessing and Alternative ArchitecturesPerformance Enhancements| Courses | Readings and Other |
|---|---|
| Computation Structures 1 2 3 | Computer Organization and Design - David Patternson...
| Computer Architecture | Computation Architecture saylor.org
| Computer Architecture (Machine Structures) | Computation Architecture geeksforgeeks
| Introductory Electricity and Magnetism |
| Electricity and Magnetism 1 2 |
OS - Operating Systems
Knowledge Units:
Overview of Operating SystemsOperating System PrinciplesConcurrencyScheduling and DispatchMemory ManagementSecurity and ProtectionVirtual MachinesDevice ManagementFile SystemsReal Time and Embedded SystemsFault ToleranceSystem Performance Evaluation| Courses | Readings and Other |
|---|---|
| Operating Systems: Three Easy Pieces | Operating Systems (4th) - Andrew S. Tanenbaum... | Operating Systems saylor.org
| Operating System Engineering | Operating Systems Geeksforgeeks
| Introduction to Operating Systems | Operating Systems saylor.org
| Advanced Operating Systems |
| Os Power User |
| Computer Hardware and Operating Systems |
IS - Intelligent Systems
Knowledge Units:
Fundamental IssuesBasic Search StrategiesBasic Knowledge Representation and ReasoningBasic Machine LearningAdvanced SearchReasoning Under UncertaintyAgentsNatural Language ProcessingAdvanced Machine LearningRoboticsPerception and Computer Vision| Courses | Readings and Other |
|---|---|
|Machine Learning |Deep Learning - Ian Goodfellow...
|CS50AI | Machine Learning - David Barber
|Game Theory | Machine Learning Geeksforgeeks
|Intro to Artificial Intelligence |Machine Learning with Python freecodecamp
|Intro to Machine Learning
|Machine Learning for Data Science and Analytics
|Modern Robotics
SE - Software Engineering
Knowledge Units:
Software ProcessesSoftware Project ManagementTools and EnvironmentsRequirements EngineeringSoftware DesignSoftware ConstructionSoftware Verification and ValidationSoftware EvolutionSoftware ReliabilityFormal Methods| Courses | Readings and Other |
|---|---|
| Compilers | How to Use Git and GitHub
| Software Debugging | Kubernetes Certified Application Developer
| Software Testing | The Mythical Man-Month - Fred Brooks, Jr.
| The Missing Semester of CS | Compilers - Alfred V. Aho...
| Software Engineering: Introduction | Compiler Construction - Niklaus Wirth
| Software Development Capstone Project | 97 Things Every Programmer Should Know
| Software Construction | Hacker Earth
| Structure and Interpretation | Coursera Guided Projects
| | Software Engineering Geeksforgeeks
IAS - Information Assurance and Security
Knowledge Units:
Foundational Concepts in SecurityPrinciples of Secure DesignDefensive ProgrammingThreats and AttacksNetwork SecurityCryptographyWeb SecurityPlatform SecuritySecurity Policy and GovernanceDigital ForensicsSecure Software Engineering| Courses | Readings and Other |
|---|---|
| Secure Coding Practices | Information Security Certification
| Information Security: Context and Introduction |
| Principles of Secure Coding |
| Identifying Security Vulnerabilities |
| Identifying Security Vulnerabilities in C/C++Programming |
| Exploiting and Securing Vulnerabilities in Java Applications |
HCI - Human-Computer Interaction
Knowledge Units:
FoundationsDesign InteractionProgramming Interactive SystemsUser Centered Design and TestingNew Interactive TechnologiesCollaboration and CommunicationStatistical Methods for HCIHuman Factors and SecurityDesign Oriented HCIMixed, Augmented and Virtual Reality| Courses | Readings and Other |
|---|---|
| Software Architecture & Design | |
| Internet of Things|
PD - Parallel and Distributed Computing
Knowledge Units:
Parallelism FundamentalsParallel DecompositionCommunication and CoordinationParallel Algorithms, Analysis, and ProgrammingParallel ArchitectureParallel PerformanceDistributed SystemsCloud ComputingFormal Models and Semantics| Courses | Readings and Other |
|---|---|
| Parallel Programming | Distributed Systems - Andrew Tanenbaum...
| Cloud Computing / Distributed Programming | Distributed Systems Reading Group - Various
| Introduction to Parallel Programming |
| Introduction to Formal Concept Analysis |
| Parallel, Concurrent and Distributed Programming |
| Fundamentals of Parallelism on Intel Architecture |
| Distributed Computing |
| Git for Distributed Development |
GV - Graphics and Visualization
Knowledge Units:
Fundamental ConceptsBasic RenderingGeometric ModelingAdvanced RenderingComputer AnimationVisualization| Courses | Readings and Other |
|---|---|
| Computer Graphics | Physically Based Rendering - Matt Pharr...
| Computational Geometry|
PBD - Platform-based Development
Knowledge Units:
IntroductionWeb PlatformsMobile PlatformsIndustrial PlatformsGame Platforms| Courses | Readings and Other |
|---|---|
| Introduction to Haskell | Open Source Applications - Michael DiBernardo |
| Functional Programming in Scala | Language Implementation Patterns - Terence Parr
| Game Design and Development | The Google Android Development Guide
| Fullstack Open |