The i-Technology Media!
Register | Log in
   
 
.NET  ·  AJAX  ·  CLOUD  ·  ECLIPSE  ·  FLEX  ·  OPEN WEB  ·  iPHONE  ·  JAVA  ·  LINUX  ·  OPEN SOURCE  ·  ORACLE  ·  PBDJ  ·  SEARCH  ·  SILVERLIGHT  ·  SOA  ·  VIRTUALIZATION  ·  WEB 2.0  ·  WIRELESS  ·  XML
YOUR FEEDBACK
Cloud Envelops Exchange & SharePoint
the usr wrote: So... how about your prediction that SCO would prevail? 11/20/2008 565 - FINAL...
Nov. 22, 2008 07:46 AM
Cloud Computing Conference
November 19-21 San Jose, CA
Register Today and SAVE !..
Did you read today's front page stories & breaking news?
Live Google News by SYS-CON!

TOP THREE LINKS YOU MUST CLICK ON


The Training Corner
SPBU.NET: Principles and Experience of Teaching .NET, Compilers, Software Engineering, and OS
Teaching Microsoft .NET and Phoenix technologies

By: Vladimir Safonov
Feb. 27, 2006 02:45 PM
  • 1
  • 2
  • next ›
  • last »

This article is devoted to my SPBU.NET educational project supported by Microsoft Research in 2004 and accomplished in 2004-2005. The goal of the project was to develop a complex of educational materials on Microsoft.NET, compilers, software engineering, and operating systems, based on my 28 years of teaching and R&D experience at St. Petersburg University. The results of the project [1-6] are uploaded to the Microsoft Developer's Network Academic Alliance Curriculum Repository (MSDNAA CR) Web site in the form of presentations and lecture notes for four courses (in English) and materials of two seminars. The results have attracted a lot of attention and I received a lot of invaluable feedback from all over the world. My courses received good ratings, and my course on .NET [1] was recommended by a Microsoft expert for teaching at Columbia University.

In this article I describe my own ERATO teaching paradigm I've been using in all my university teaching work, the contents of the courses and seminars included in the SPBU.NET project, my experience of teaching these courses and seminars (what the most interesting and the most difficult parts were for the students), and then outline perspectives of further development.

The ERATO Teaching Paradigm
Many current tutorials and other teaching materials on software engineering tend to represent the techniques that are taught as being brand new and invented currently by the commercial companies that are advertising them.

On the contrary, my viewpoint of the current software engineering is as follows: now the time has come for commercialization (i.e., implementing in commercial systems and being used by millions of customers) of great ideas (like OOP, modular and component programming, exception handling, etc.) whose foundations were actually laid in 1960s and 1970s.

In university teaching I use my own teaching paradigm referred to as ERATO, which is an acronym for Experience, Retrospective, Analysis, Theory, Oncoming perspectives (Erato is the name of the muse of romantic poetry in antique Greek mythology shown in Figure 1).

Experience
Experience consists of a description of my long-term commercial and research software project experience in my courses. In particular, from 1992 to 2002 I lead St. Petersburg Sun projects in the compilers and Java areas. Since 2002 I started working with Microsoft Research on the Aspect.NET project [7-10], which I've already described in this journal in a series of articles, and on Phoenix [11], within the framework of the Phoenix Academic Program. These kinds of things are of great interest to students, and it helps to better illustrate the concepts and principles that I am teaching.

Retrospective
Retrospective allows for the consideration of the historical background of each topic being taught since its early origin, so that students may have a deeper understanding of the fundamental concepts. For example, concurrency and multi-threading have been around since Prof. E. Dijkstra's 1960s pioneering works on semaphores; exceptions have existed since Prof. B. Liskov's CLU language signal construct in early 1970s. It is interesting to emphasize that, as a result, students themselves (even without the teacher's recommendations) start doing the same in their seminar presentations.

Analysis
Making critical and comparative analysis of the most important concepts and technologies when teaching them is essential. For example, I analyze the Microsoft.NET platform, as compared to the competitive Java platform, and explain the fundamental reasons why .NET is more general, open style, and prospective. I certainly explain to students that the authors of .NET have taken the best of Java, since .NET was developed about five years later. On the other hand, I show the students that .NET technologies have great backward influence on Java - in particular, it relates to the decision of Java founders to specify and implement boxing, unboxing, and annotations (or metadata) in Java 1.5. This way the students can better understand the dialectic nature of software engineering development.

Theory
This entails the provision of theoretical definitions, justifications, known theorems, and issues relevant to the topic being taught. In particular, when teaching the concept of data type, I make a review of the techniques of formal specifications of abstract data types: Sir Tony Hoare's theoretical papers on data types published in during 1960s and 70s, papers by D. Scott on type theory, papers on initial and final algebra semantics of abstract data types by the ADJ group (1970s) (which resulted in algebraic data-type specification languages OBJ and SDL), etc.

Oncoming Perspectives
This is to explain my vision of near-future progress in the area of the topic. For example, I prove and explain to the students the perspectives of using Microsoft.NET as a scalable software development platform during the nearest decade.

Structure, Practice and Experience of SPBU.NET project
This section of the article explains the principles and the specifics of the curriculum structure provided as the result of the SPBU.NET project, and the specific details and issues related to each of its items.

For each of the parts of SPBU.NET project [1-6] uploaded to the MSDNAA CR Web site, I provide a README file explaining the structure of the corresponding course (or seminar) archive.

For each course [1-4], I provide lecture presentations and lecture notes. Each of the lecture notes is related to the slides of the corresponding lecture presentation. The lecture note can be used as the basis for teaching the lecture. Also, a practical home task (like "please implement this method/algorithm in C#") is provided with each lecture, based on its material.

Each seminar [5, 6] material consists of the best students' presentations of the talks made at the seminar for a few recent years. To get his credit for the seminar, each student is to make a report (one or two academic hours long) on one of the topics I offer to the students, or on any other related topic selected and offered by the student. In any student presentation I require using PowerPoint presentations (preferable in English) and using understandable, practical working code examples, in addition to general concepts.

Microsoft.NET Architecture and the C# Language [1]
This is an undergraduate course for fourth-year students, and one of the first in Russia on this subject. According to my teaching principles, in this course I consider Microsoft.NET not just "per se," but in historical retrospective. In the history of computing a number of approaches have already appeared to support multilanguage programming whose foundations were very close to .NET, though they supported an older, procedural paradigm. For example, the US Burroughs 6700/7700 computer project and the Russian "Elbrus" computer project [12] were based on the principles of supporting the basic mechanisms of programming languages and their implementation. They used postfix notation as the instruction set. Actually though, in "Elbrus" these postfix instructions were compiled "on the fly" by hardware to ordinary three-address code. Speaking in modern terms, it was a kind of hardware-supported just-in-time compilation (implemented in late 1970s). There was an analogue of metadata in "Elbrus," referred to as object code file extension, which was actually program structure and type information in some tree-like, common, language-agnostic format used by the common run time of this system.

Other topics of .NET are also considered in my course from general viewpoint. For example, when teaching the .NET Common Type System (CTS), I make a review of the most widely known type systems and approaches in classical languages, such as Pascal, C, C++, Simula 67, and others. I show the students that CTS is a reasonable generalization of most of the well-known type systems.

The course covers all main topics of Microsoft.NET: CLI, CTS, CLS, CLR, assemblies and strong names, tools, security, Web services, remoting, languages, etc.

It is interesting to analyze, from my experience, which are the most difficult .NET topics for the students to understand, and which .NET topics attract most of students' attention.

The most difficult themes for students are metadata and security. The students do not always realize the role of metadata in .NET, as language-agnostic information on the types defined and used in an assembly. To better explain it, I use historical analogies and explain the role of types on all stages of computation, including run time. As for security, students don't always understand various kinds of .NET security, especially, role-based security, evidence-based security, and security stack walk. To better explain these concepts, historical analogies and practical examples are used.

The most interesting topic in .NET for students is XML Web services. Students do understand its importance and are happy to provide examples and to give deep and long analytical talks on this subject.

Compiler Development [2]
This is a course for graduate (in our Russian practice, fifth-year) students. The specifics of my compiler course, as compared to many others, are as follows. I am teaching my own efficient compiler development techniques that I developed and implemented in commercial compilers (in particular, in Sun Pascal compiler for SPARC architecture in the 1990s). Some of them I issued as my three US compiler patents in 1990s. Most of these methods relate to semantic analysis - efficient lookup and semantic attributes (in particular, types) evaluation. In my course I surely refer to classical compiler textbooks by D. Gries, A. Aho, R. Sethi, and J. Ullman, but I show the students that in some cases it is quite possible to offer much more efficient techniques. For example, I explain how my principle of storing and updating the reference to the current effective definition(s) for an identifier from the hashed identifiers table helps to make semantic analysis much more efficient and to avoid linear search in most cases. Another very important topic of my course is the concept of data type and related efficient algorithms of type-checking for the languages with name identity and structural identity of types. As one of the first users of Microsoft Phoenix, I also teach students the basics of Phoenix - a state-of-the-art toolkit for developing, optimizing, and multitargeting compiler development developed by Microsoft [11]. As a distinguished expert on .NET and Java, I explain to students in my compiler course the specifics of compiler development for .NET, and of Java implementation.

  • 1
  • 2
  • next ›
  • last »
Published Feb. 27, 2006— Reads 12,175 — Feedback 1
Copyright © 2008 SYS-CON Media. All Rights Reserved.
About Vladimir Safonov
Vladimir Safonov is a professor of computer science and the head of the computer science laboratory at St. Petersburg University. He received his Masters degree in computer science there in 1977 and has been with the university for 28 years. Vladimir has published five books and his research interests include AOP, Microsoft.NET, Java, programming technologies, compilers, and knowledge management.

Add Your Feedback

In order to post a comment you need to be registered and logged in.

Register | Log in

Please wait while we process your request...





SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS
SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021


SYS-CON FEATURED WHITEPAPERS

ADS BY GOOGLE

ADVERTISE   |   MAGAZINE SUBSCRIPTIONS   |   FREE BREAKING-NEWSLETTERS!   |   SYS-CON.TV   |   BLOG-N-PLAY!   |   WEBCAST   |   EDUCATION   |   RESEARCH

.NET Developer's Journal - .NETDJ   |   ColdFusion Developer's Journal - CFDJ   |   Eclipse Developer's Journal - EDJ   |   Enterprise Open Source Magazine - EOS
Open Web Developer's Journal - OPENWEB   |   iPhone Developer's Journal - iPHONE   |   Virtualization - Virtualization   |   Java Developer's Journal - JDJ   |   Linux.SYS-CON.com
PowerBuilder Developer's Journal - PBDJ   |   SEO / SEM Journal - SJ   |   SOAWorld Magazine - SOAWM   |   IT Solutions Guide - ITSG   |   Symbian Developer's Journal - SDJ
WebLogic Developer's Journal - WLDJ   |   WebSphere Journal - WJ   |   Wireless Business & Technology - WBT   |   XML-Journal - XMLJ   |   Internet Video - iTV
Flex Developer's Journal - Flex   |   AJAXWorld Magazine - AWM   |   Silverlight Developer's Journal - SLDJ   |   PHP.SYS-CON.com   |   Web 2.0 Journal - WEB2
Apache   |   CMS   |   CRM   |   HP   |   Oracle Journal   |   Perl   |   Python   |   Red Hat   |   Ruby on Rails   |   SAP   |   SaaS

SYS-CON MEDIA:   ABOUT US   |   CONTACT US   |   COMPANY NEWS   |   CAREERS   |   SITE MAP
SYS-CON EVENTS:   |  AJAXWorld Conference & Expo  |  iPhone Developer Summit  |  OpenWeb Developer Summit  |  SOA World Conference & Expo  |  Virtualization Conference & Expo
INTERNATIONAL SITES:   India  |  U.K.  |  Canada  |  Germany  |  France  |  Australia  |  Italy  |  Spain  |  Netherlands  |  Brazil  |  Belgium
 Terms of Use & Our Privacy Statement     About Newsfeeds / Video Feeds
Copyright ©1994-2008 SYS-CON Publications, Inc. All Rights Reserved. All marks are trademarks of SYS-CON Media.
Reproduction in whole or in part in any form or medium without express written permission of SYS-CON Publications, Inc. is prohibited.
 
close this window