Life and Death Computing
Course learning objectives
At the completion of the course, students will have added to their
ability to identify, analyze and solve problems in a range of areas of
biomedical computing, including:
- distinguish between modular and non-modular designs with respect
to biomedical software
- identify properties of software that may enhance or detract from
effective use
- identify issues that should be addressed in designing network
based medical applications and network protocols for medical data
- distinguish between software correctness, safety and quality in a
biomedical context
- explain why biomedical software safety must be considered in
context with the hardware and user environment
- explain how not understanding the algorithm(s) a medical program
uses can lead to serious consequences
- analyze a biomedical programming problem and give reasons for
using or not using particular programming languages, software
environments or methodologies
- identify potential areas in a biomedical computer program where
speed and/or memory usage could be an important issue, and describe
how you would determine it.
In addition, students will have gained basic skills with programming
in Common Lisp. At the end of the course, students will be able to
perform the following representative tasks, illustrating a solid basic
knowledge of core programming concepts:
- Write small Common Lisp programs (100--200 lines of code).
- Write functions in the Common Lisp programming language, that
illustrate the following techniques:
- conditional expressions,
- recursion, with lists and trees,
- iteration,
- the use of auxiliary or helper functions,
- the use of arrays,
- the use of user defined structured types.
- Write functions that implement basic algorithms for sorting,
searching.
- Given a list of expressions or function definitions in Common
Lisp, identify which ones cause side effects and which do not.
- Given a computational problem, state whether it is preferable to
solve it using lists or arrays, and give at least one reason to
support the choice.
- Given a small function definition (10 to 20 lines of code),
determine if it is syntactically correct.
- Given a statement of an algorithm for a simple computation, or
an implementation in code, determine whether it will terminate on all
valid inputs.
- Utilize in their programs elements of the Common Lisp Object
System.