Computer-science: Add Resources.md

Created on 24 Sep 2020  路  2Comments  路  Source: ossu/computer-science

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.

  • Many useful and resourceful links are posted in lots of issues, like this some most recent ones #789, #783, #799 or the security one that has been open since January #639.
  • Also lots of great links to valuable resources are posted constantly on the discord server Discord, followed by comments like "thanks for sharing!".

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:

  • Increase visibility of the 1 single resources section.
  • Provide more value that impacts students career path by helping them learn and understand CS Knowledge Areas.

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

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

Systems

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

Applications

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


SDF - Software Development Fundamentals

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

PL - Programming Languages

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

DS - Discrete Structures

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 |

SP - Social Issues and Professional Practice

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|

CN - Computational Science

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

AL - Algorithms and Complexity

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 |

SF - Systems Fundamentals

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

IM - Information Management

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) |

NC - Networking and Communications

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

AR - Architecture and Organization

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 |

OS - Operating Systems

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 |

IS - Intelligent 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

SE - Software Engineering

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

IAS - Information Assurance and Security

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 |

HCI - Human-Computer Interaction

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|

PD - Parallel and Distributed Computing

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 |

GV - Graphics and Visualization

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|

PBD - Platform-based Development

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 |

All 2 comments

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

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

Systems

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

Applications

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


SDF - Software Development Fundamentals

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

PL - Programming Languages

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

DS - Discrete Structures

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 |

SP - Social Issues and Professional Practice

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|

CN - Computational Science

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

AL - Algorithms and Complexity

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 |

SF - Systems Fundamentals

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

IM - Information Management

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) |

NC - Networking and Communications

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

AR - Architecture and Organization

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 |

OS - Operating Systems

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 |

IS - Intelligent 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

SE - Software Engineering

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

IAS - Information Assurance and Security

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 |

HCI - Human-Computer Interaction

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|

PD - Parallel and Distributed Computing

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 |

GV - Graphics and Visualization

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|

PBD - Platform-based Development

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.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

sunn-e picture sunn-e  路  3Comments

alwongg picture alwongg  路  4Comments

ahmedvip2008 picture ahmedvip2008  路  3Comments

DavidScales picture DavidScales  路  4Comments

ahmdaeyz picture ahmdaeyz  路  3Comments