Description
Develop a computational model (e.g., simulation) of a real or
hypothetical system to study its behavior. Use this model to write a
report answering questions related to this system.
Scenario
You are writing this code and report for a client who has hired your
engineering services. You can consider that the client is interested in
the answer to the question you've posed, as documented in your report -
but not the details of the code. The client's engineering team will
check that the conclusions of your report are traceable and reproducible
through your code. The results from the code should therefore be
reproduced as easily as possible through automation; a graphical user
interface or command-line interface is not needed.
"Boundary conditions"
- You can do the project alone or with one additional person.
- Your code should be written in a combination of at least one high
level language (Python or MATLAB) and one low level language (C). You
can use additional tools and programming languages.
- Your code should be reproducible (by others).
- Documented
- Declare all dependencies (packages, programs, and their version
numbers)
- Generation of results should be automated - tables, calculations,
figures in your report should be generated within a single
command/script (as much as possible).
- You may use someone else's code as long as it is not the bulk of
your code base. But it is imperative that you cite their work.
- Your report should also follow proper conventions for
citations.
Deliverables
- [10%] Project proposal
- Final submission
- [55%] Code repository
- [35%] Concise report of results (5 pages without citations or
appendices)
Project proposal
Contents:
- Question to be answered / motivation for the project (why would
anyone care that you undertake this project)
- Current "state-of-the-art" (what is the closest computer
program/code you are aware of or that you can find)
- Objective and scope of the project
- Approach (methods/data set you plan to use) - is it feasible?
- Expected schedule (include a weekly Gantt chart)
Assessment criteria:
- Clear motiviation, introduction of the topic, and definition of
project scope
- Attempt at identification of model (and data set, if applicable),
including classification (continuum/discrete, empirical/mechanistic,
forward/inverse)
- Attempt at identification of related computer programs/codes
- Statement of feasibility (also as reflected in Gantt chart)
Final submission
Report contents:
- Deviations from project proposal
- Introduction to the problem
- Approach used (e.g., models, mathematical relationships)
- Results
- Conclusion and outlook
With exception to Point 1, the final report should be a standalone
document that can be read independently of the project proposal (i.e.,
your client should be able to understand the project without having to
refer back to the original proposal).
Code repository contents:
- README file
- Organized code and input data; no executables or outputs
The README file should contain instructions on how to generate the
results (Tables, Figures, calculations) included in the report.
Assessment criteria:
- Quality of the written report
- clarity of motivation methods, results, conclusions
- self-assessment of result - is it reasonable?
- proper attribution (citation) of sources
- Quality of the submitted code repository
- readability: consistent style, structure, modularity, documentation,
organization)
- good practices: e.g., no hard coding, unnecessary repetition
- easy to run; reproduces results
- proper attribution (citation) of sources