ESAC Lectures

Software defined radio

Jon Brumfitt

Wednesday 21 march 2018 at 15:00-16:00, esac, room d52


Software Defined Radio (SDR) refers to a radio communication system in which signal processing is implemented in software in place of traditional hardware mixers, filters, etc. This leads to much more flexible systems that can handle many types of signal over a wide frequency range. The devices can be upgraded in the field by a simple software update. This has obvious advantages for applications such as space. SDRs may work with ordinary PCs or be embedded systems. This talk discusses the advantages of SDR and a few applications. The architectural features of a typical receiver are explained and the signal processing techniques are discussed. Some examples of SDRs are shown and a short demonstration is included.



Functional Programming

Programming languages have two purposes. The first is to tell a computer what to do. The second is to allow a programmer to tell the computer what they want it to do. Our day to day programming languages (Java,  C++, Python) are very good at the former but inadequate for the latter. As a consequence, we end up writing messy code that focuses on the how but expresses very little on the what.


Functional programming treats programs as declarative definitions of mathematical functions rather than as sequences of instructions to be executed. This results in a program built of simple independent parts that are easy to understand and reason about. The simple language semantics also allow compilers to perform sophisticated optimizations. In addition, functional languages allow us to write programs that can run concurrently without the usual problems associated with threads.


The concepts behind functional programming date back to the earliest days of computing, but have remained an academic research topic until fairly recently. Functional languages are now increasingly being used in real-world applications and functional language features are appearing in mainstream languages such as Java.

1. An introduction to functional programming


Wednesday 9 may 2018 at 15:00-16:00, esac, room B5


The first talk introduces the concepts of functional programming with some simple examples in Haskell. It also looks at the motivation for functional languages and their history, as well as their strengths and weaknesses. Suitable application areas are mentioned as well as other languages such as Scala. Finally, a brief look is taken at how functional and object-oriented programming try to achieve similar goals while advocating apparently contradictory principles.


Viewgraphs; video of lecture.


carlos muniz

Wednesday 27 june 2018 at 15:00-16:00, esac, room b5


The second talk shows examples on how mainstream programming languages have in the last years progressively incorporated concepts and ideas from functional programming. It will present examples from different languages as diverse as Python, JavaScript, C++, Java or Scala.


Viewgraphs; video of lecture