Skip to content

Instantly share code, notes, and snippets.

@floledermann
Last active April 28, 2020 08:45
Show Gist options
  • Save floledermann/a6b53f0493e9c25cb59b289daf428c07 to your computer and use it in GitHub Desktop.
Save floledermann/a6b53f0493e9c25cb59b289daf428c07 to your computer and use it in GitHub Desktop.

Computer Literacy for Geosciences

Draft TOC for a practical introduction to computing for Geosciences (most of it is probably applicable to other non-Computer Science fields)

The course should be agnostic towards specific platforms or products - Presented techniques should always cover the three main OSs (Win, Mac, Linux), and program code should be given in multiple languages (e.g. Python, R, JavaScript)

🟊 marks sections that can easily be skipped or moved to advanced courses

For more general info & license, see Meta

1 Hardware, Software, Operating System, Network

  • Hardware components
  • Installing applications
  • Users & permissions (?) 🟊
  • Networking terminology: Server, Client, Firewall, ...

2 Working with Files

  • Directory structure
  • Filenames, Extensions, File types
  • Absolute / relative paths
  • Filename strategies, Project structure
  • Archives (Zip, RAR, ...)

3 The Command Line

  • Invoking the command line / Terminal / Console / Shell
  • Navigating the file system
  • Running programs, Program arguments
  • Input and output
  • Working remotely (SSH) 🟊

4 Data

  • Binary representation
    • Integers, Hexadecimal
    • Floating point 🟊
    • Characters: ASCII, Unicode
  • Data structures: Record/Struct, Table, Graph, Tree, Database 🟊
  • Binary vs. Text-based data formats
    • CSV
    • JSON, GeoJSON
    • XML
    • SHP
    • GeoPackage
    • XLS
    • RDF
  • Text editor (and other low-level tools)
  • Data conversion & "wrangling"
  • Standards & Network protocols 🟊

5 Programming 🟊

  • Fundamentals of programming (Turing completeness)
    • Numbers & Math expressions, Strings
    • Memory (variables, arrays)
    • Booleans, Conditions
    • Loops
  • Functions
  • Data structures (OOP?)
  • Bugs & Debugging
  • APIs, Libraries and Dependencies
    • Containerization
    • Scripting applications

6 Version Control, Software & Data Management 🟊

  • Git / Sourcetree
  • Github / Gitlab / ...
  • Building and Deploying

7 Copyright and Licensing

  • Copyright fundamentals
  • Open Source, Open Data, Creative Commons

8 Security, Privacy and Encryption 🟊

9 Ethical & Societal Issues in Computing and Geocomputing

10 Online Resources

  • Competent "Googling"
  • Q&A Platforms
  • Programming Notebooks 🟊

11 Overview of GIS-related Software

  • GISes
  • Commandline tools
  • Databases
  • Web-based tools & technology

Meta

  • This is not a curriculum! Obviously, each section could be expanded to a course on its own or more, but the goal of this is to collect a set of minimum requirements to allow other courses to start at a higher level and/or be more inclusive to students with less previous knowledge!

  • This is not normative! Use it as a checklist for your own courses of what may be required, or use it to see how the teaching of those fundamentals could be distributed across a set of courses. But by all means adapt it to what is needed in your specific context.

  • This is not a list of prerequisites! Although it could be argued that most of this should be taught in schools, the fact is that we cannot expect students to have acquired any of these skills before coming to university (at least not where I live). By defining any of these skills as prerequisite knowledge without investing resources in teaching them, you will only reinforce inequalities, and pile more extracurricular workload on students who are not priviledged to have learnt thos skills privately, wihtout even giving them credit. So don't.

CC-BY-SA Β© 2020 Florian Ledermann

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment