|Course:||BSc in Computer Science and Computer Engineering|
|Curricular Unit (UC)||
Virtual Execution Environments
|Year: 2nd||Semester: 2nd||ECTS: 6||Total Hours: 160|
|Contact Hours||T:||TP: 67.5||PL:||S:||OT:|
|Professor in charge||
Fernando Miguel Gamboa de Carvalho
T - Theoretical; TP - Theory and practice; PL - Laboratory; S - Seminar; OT - Tutorial.
- Intended learning outcomes
Students who successfully complete this course unit should be able to:
1. Discriminate virtual execution environment requirements necessary to support applications and components building and execution.
2. Develop components and applications for virtual execution environments.
3. Understand the need and the inner working of the runtime services provided by virtual execution environments.
I. Component oriented programming. Requirements and solutions. Virtual execution environments supporting object oriented languages: JVM and CLI (VES).
II. Component’s building and loading (CLI assemblies). Intermediate language. C# as an example of language targeted at CLI.
III. CLI Type System (CTS). Functions as objects: events and delegates. Generic code. Functional paradigm supporting in C# language.
IV. Runtime services: automatic memory management; reflection; component´s version control and sharing; native code interoperability; application domains.
- Evidence of the syllabus coherence with the curricular unit’s intended learning outcomes
Virtual execution environments (VEE) enable productivity, deployment and interoperability levels that are hard to achieve by native execution environments. This unit identifies the problems solved by VEE and the solutions used, presenting the main VEE components (points I and II of Syllabus) with the goal to give a precise overview of the AVE.
The CLI type system is examined in depth, using C# as the reference language (point III), in order to provide components and application development skills, for this and others VEE, taking full advantage of offered constructions, namely generic code supporting.
Finally the study of runtime services, including garbage collection, reflection and versioning mechanisms (point IV) aimed at increasing the ability to debug components and applications, and enabling their correct deployment and configuration.
- Teaching methodologies (including evaluation)
Theoretical and practical teaching is planned during the semester in 30 lectures that correspond to 67.5 of contact hours (15 lessons of 3 hours and 15 of 1.5 hours) and 162 student working hours. The lectures are intended for presentation of topics and practical examples. The main topics are further explored by performing some series of exercises and a final project.
The curricular unit's goals are evaluated through: (1) test (T), (2) assessment forms (F) and (3) projects argumentation (P). The final grade is the result of the following formula: 40% [T] + 20%[F] + 40% [P].
- Evidence of the teaching methodologies coherence with the curricular unit’s intended learning outcomes
The knowledge on the theoretical aspects of virtual execution environments is achieved through interactive lectures and exercises. The lectures are complemented with practical sessions, which students have to solve problems using the development tools that will be used in the resolution of practical work. The final work is to develop an application that integrates the knowledge gained throughout the semester.
- Main Bibliography:
J. Richter, CLR via C#, 4th edition, Microsoft Press, 2012. ISBN 9780735667457.
D. Box, C. Sells, Essential .Net, Volume I: The Common Language Runtime, Addison Wesley, 2002. ISBN 9780201734119.
Standard ECMA-335, Common Language Infrastructure (CLI).