EL2310 Scientific Programming (7.5 ECTS)
Scientific Programming is a programming course tailored for the Systems, Control and Robotics program. The aim is to ensure that everyone can use MATLAB which will be used in many of the coming courses as well as to be able to program in C/C++.
The examination of this course is through projects that should be solved
individually. There is one project for MATLAB, one for C and one for
C++. Each project is preceded by an optional lab that provides an
additional opportunity to train before the project.
The themes for the projects are mainly from robotics. Over the past years, algorithms
and methods such as path planning with potential fields and
probabilistic road maps, scan matching and the control of robot
manipulator arms have been investigated.
Solving the projects requires not only the ability to program, but to
analyse a problem and to go from a mathematical formulation to an
algorithm and then to an implementation. Finally, and just as
importantly, an evaluation should also be carried out to make
sure that the implementation works as expected.
A full description for this course can be found in the
KTH Course Catalogue.
Feedback
The course has been developed and improved over several years by several people, including
Patric Jensfelt, Carl Henrik Ek, Kai Huebner, Andrzej Pronobis, Florian T. Pokorny. Please provide feedback and let me
know how we can further improve this course!
Links
- Please check the EL2310 page on Bilda to discuss questions about the course and to submit your projects.
-
Matlab
Matlab Documentation,
StackOverflow Matlab
"Matlab for Engineers Explained", F. Gustafsson och N. Bergman, Springer Verlag, 2003 (ISBN 1-85233-697-8)
-
C
Programming in C Video Course,
C Programming WikiBook,
Pointers and arrays in C,
Coding Conventions,
C/C++ Reference,
C/C++ Library Reference,
StackOverflow C
"C Programming Language (2nd Edition)", Brian W. Kernighan, Dennis M. Ritchie, Prentice Hall, 1988
-
C++
Programming in C++,
C++ WikiBook,
Google C++ Style Guide,
Another C++ Style Guide ,
StackOverflow C++
-
Linux and programming tools
Introduction to Linux,
Vi/Vim file editor,
Emacs file editor,
Makefile Tutorial
Virtual Machine
In order to provide an identical environment for all students working on
the C and C++ projects, an Ubuntu virtual machine was prepared in
VirtualBox. The VM has all the required tools preinstalled
(gcc/g++/emacs/SDL etc.) and will be used to run the submitted project
code for grading. You can download a RAR compressed VirtualBox VM here.
To use the virtual machine, download and install VirtualBox.
Then, download and unpack the virtual machine and add it to VirtualBox
using Machine->Add. To exchange files between the virtual machine
(guest operating system) and your OS (host OS), use shared folders. More information about VirtualBox can be found here.
Lectures
Details about labs, downloadable slides etc will be posted here as we proceed.
Please check this website for updates to the schedule.
Note that this course largely relies on your self-study and that the slides are mainly there to provide you with a frame of reference.
-
-
-
Matlab project announced!
Here is the project
Description, and here is an associated
file. The deadline to submit your solution is 12th September (Monday). Help session will be on 7th Sep (Wed) 1-3pm at Teknikringen 14, room 304.
-
-
-
-
-
-
-
-
-
Mon 26.09.2016
Lecture 10: Memory, External Input, File and Bitwise Operations:
Slides and
exercises.
-
Wed 28.09.2016
Example code for allocating/deallocating double arrays in C, :
Code.
-
Thurs 29.09.2016
Lecture 12: Memory Management, Object Oriented Programming and Classes in C++, :
Slides and
exercises.
-
-
-
Wed 05.10.2016
Lecture 15: Templates, STL, File I/O and Strings in C++ :
Slides and
exercises.
-
-
Wed 12.10.2016
Lecture 16: C++1y and Conclusion
Slides.