User:Regulus bloodmoon/Programming for Capsuleers
Course information
General information
This is a complete course for students seeking to learn computer programming in the context of EVE Online. The first half of the course is aimed toward capsuleers with no prior programming experience and is intended to bring them up to speed. The second half of the course covers tools useful for developing EVE-related applications and demonstrates examples of applications that use available tools to solve common EVE-related problems.
Optional homework assignments are provided after every lecture and may be submitted for grading and comments. The homework is recommended to solidify student understanding of the material, but is not required, as there is currently no way to 'pass' an E-UNI course.
- Duration: ??????
- Topics covered:
- to be summarised
- Student requirements:
- to be determined.
Notes for the teacher
To be compiled.
Course contents
Introduction
To be written. Explain why computer programming is a useful skill, particularly in the context of EVE Online. Automating repetitive tasks is nice, but with the right tools and enough patience we can do anything the hell we want to: solve the T2 market, write an API-based character checker (for detecting spies), calculate trade routes, ...
Setup
To be written. Planned content:
- Setting up a sane Python 2.7 programming environment on Windows. Python 2.7 is stable and has more available libraries than Python 3.2. Mac OS X and most Linux distributions have Python built in.
- Running the Python interpreter on Windows. Basic interactive interpreter usage.
- Basic usage of the IDLE Python IDE. Running a Python script using IDLE, and using the Python interpreter from the command line.
Programming basics
Inherently multi-session.
To be written. Outline:
- Basic input/output, variables, and basic arithmetic.
- Types in Python: int, float, long, string. What to do when types matter (typecasting between primitives).
- Boolean expressions; the boolean type. Control flow: if/elif/else, while loops.
- Sequence types: list, tuple. Control flow: for loops (pythonic sequence iteration).
- Mapping types: dict. Iterating over dictionaries properly.
- Function definitions, the def statement, using function arguments, calling custom functions, specifying values of named arguments.
- Class definitions, the object-oriented model, the meaning of 'self'.
- File input and output. Parsing command-line arguments. String formatting.
- Regular expressions, basic text processing.
- Additional topics TBD.
- Putting it all together: project TBD.
Programming methods
Inherently multi-session.
Outline:
- Fundamental data structures: lists (vectors), deques (linked lists), dicts (hash tables), trees.
- Discussion of algorithmic complexity (time and space). Asymptotic complexity, O-notation.
- Recursive algorithms: binary search, Towers of Hanoi.
- Dynamic programming: Fibonacci sequence, knapsack problem, seam carving.
- Graphs. Graph algorithms: BFS, DFS, minimum spanning tree (Prim, Kruskal), Dijkstra's algorithm, Floyd-Warshall, A-star.
Advanced topics of interest:
These topics largely have no connection to EVE Online, but would be taught in a full-length version of the course (not necessarily in this order).
- Numerics: floating-point arithmetic and how it WILL kill you. Fast Fourier transforms. Introduction to digital signal processing.
- Parallel programming: multithreading and how it can turn long problems into short ones (apart from annoying P-complete problems). Inter-process communication.
- Network programming: sockets, client-server model, sending and receiving messages over teh Internetz.