Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

User:Regulus bloodmoon/Programming for Capsuleers: Difference between revisions

From EVE University Wiki
Programming methods: outline/stub
 
(6 intermediate revisions by the same user not shown)
Line 56: Line 56:
* Graphs. Graph algorithms: BFS, DFS, minimum spanning tree (Prim, Kruskal), Dijkstra's algorithm, Floyd-Warshall, A-star.
* Graphs. Graph algorithms: BFS, DFS, minimum spanning tree (Prim, Kruskal), Dijkstra's algorithm, Floyd-Warshall, A-star.


Advanced topics of interest:
Advanced topics of interest:<br/>
''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).''
''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.
* Numerics: floating-point arithmetic and how it WILL kill you. Fast Fourier transforms. Introduction to digital signal processing.
Line 63: Line 63:


===Useful libraries and techniques===
===Useful libraries and techniques===
Here's where second-year CS majors can start to follow the course if they haven't been following yet.
Outline:
* Structured data storage, structured data querying. The SQLite database engine: storing and retrieving tabular data.
* XML parsing.
* Additional topics TBD.
GUI programming is not on this list because that's an entire course in itself, but ''basics'' could be covered if sufficient demand.


===EVE-specific stuff===
===EVE-specific stuff===
Here's where experienced programmers can listen in.
Outline:
* The EVE API. API keys. Connecting to the API, getting useful information, making sense of it all.
** Practice: collating all assets owned everywhere.
* The Reverence cache library. What's in the cache? ZOMG so much stuff; discovering what's there, making sense of it all.
** Practice: collating all the cached market data from Jita 4-4.
* The EVE-Central API.
** Practice: calculating a character's total net worth.
** Practice: using data from EVE-Central and the cache, put together an accurate picture of mineral prices in major trade hubs.
* The static data dump. Getting the static data dump. What's in the static data dump? ZOMG so much stuff; making sense of it all.
** Practice: calculating the shortest route from Jita to Aldrat.
** Practice: calculating a bill of materials for T1 and T2 items; there are subtleties particularly in the T2 calculation that will become important.


===Software engineering: design and implementation===
===Software engineering: design and implementation===
Outline:
* It all starts with an idea. Putting together a design document, functional specification from the requirements.
* Outlining the code. Iterating on the outline. Details are good; the objective is to break the project into pieces smaller than your own head.
* Implementation. Writing up and documenting code. Coding style, documentation style.
* Testing. Testing. More testing. Debugging: one of those things that's so hard to teach, but that doesn't mean we can't try.
* Code reusability; a.k.a. "Why spend all this effort on writing 'good' code anyway?"


===Putting it all together: problem solving===
===Putting it all together: problem solving===
Largely a worked example.
Problem: I used to be a T2 industrialist. One of a T2 industrialist's worst nightmares is putting together a shopping list. T2 invention is inherently chance-based, so you never know how many of what types of product you'll need to order reagents for in advance. With the large variety of T2 item types and T2 reagent types, putting together a spreadsheet would be largely impractical and inflexible. We would like a program that takes designated T2 item types and quantities of each type and outputs a full shopping list. Extra features, like price calculation and subtracting off items I already have, would be nice too. To make this example simpler, I'll make certain assumptions about my supply chain locations and purchasing decisions: I'll assume I'm purchasing everything from Jita 4-4 and storing reagents in my personal hangar in [insert station in convenient 0.5 system here].