210 likes | 342 Vues
This paper discusses the use of Ada as a teaching language for Software Engineering (SE) courses at the Open University of Israel. It explores the perception of Ada as a hindrance compared to languages like Java, examines various course structures and teaching methodologies, and highlights Ada's advantages such as robust type systems and information hiding. The paper further addresses problematic features in both Ada and Java, emphasizing the importance of good textbooks and community support in enhancing Ada's adoption as a teaching language. The conclusion advocates for a fresh approach to how Ada is perceived in universities.
E N D
Ada as a Language Teaching Ehud Lamm The Open University of Israel Ada-Europe’2003
Context • Current course: Software Engineering with Ada (Booch). • Good, but perhaps not good enough. • Ada perceived as hindrance. • I examined several Java textbooks, and discovered Lisokv’s Program Development in Java. • What should be our next step? Ada-Europe’2003
Why & How • Undergraduate SE course (CS students) • Classic Software Design • Traditional approach (imperative, OOP) • “Essentials of Software Engineering” • Modularity, Reliability, Readability, Flexibility, Software Life Cycle • University education Ada-Europe’2003
Why & How • Practical course • Challenging design problems • Programming Should be Fun • Not just “getting it to work” • Students evaluate and re-evaluate their designs. • Make the language invisible Ada-Europe’2003
Course Outline • Data Abstraction • ADT/ADO • Generic Units • Inheritance • Basic Tasking • Interface/Implementation • Adequacy • Operation Categories • Exceptions • Pre/Post Conditions • Invariants • Flexibility • Parameterization • Separate Compilation • Combining abstractions • Runtime Polymorphism • Heterogenic collections • Classwide/Dispatching • IS-A (LSP) • Composition (HAS-A) Ada-Europe’2003
Q1: Log file Log Gen_Log Event’Class Filter’Class Writer’Class Dual Buffering Ada-Europe’2003
Priority Queue Priority Queue Priority Queue Q2: Priority Queue Priority is priv. with func “<“(..) Priority is (<>) array of queues sorted linked list Ada-Europe’2003
generic type Struct is lim. priv. type Elem is priv. with proc Insert with proc Remove … package Any_Struct is end; Struct is new Any_Struct(<>) Package Protect_Struct protected type Struct …. end; Ada-Europe’2003
with pack Any_Iter(<>) function Max(S) … begin Start(S); while More_Elements(S) loop …. Next(S); end loop; End; pack BST --Binary_Search_Tree func BST.Max.. Ada-Europe’2003
generic type Item is priv. packageSetsis type Set is abs. tagged null rec … end; generic with func “<“(I1,I2:Item); packageSets.Sorted_Listis type Set is new Sets.Set with priv. Ada-Europe’2003
Does the choice of programming language really matter? Ada-Europe’2003
No but... Ada-Europe’2003
In theory, there’s no difference between theory and practice; In practice, there is. Ada-Europe’2003
‘Ideal’ Language Ada Java • Rich type system • Information hiding • Explicit interfaces • Value semantics • Genericity • Inheritance • Garbage collection • Design by Contract • First-class functions • Rich libraries, variety of tools Ada-Europe’2003
Language Community • Libraries • Reusable code • Tools (e.g., VS IDEs, diagramming, DbC, etc.) • Tutorials/textbooks • etc. Ada-Europe’2003
Problematic features (Ada)(in my experience) • Many kinds of Interfaces • Access to subprograms (accessibility) • Controlled (vs. other approaches to destructors/constructors) • Controlled & Generics • Controlling child visibility • Verbosity (exercises take too much time) Ada-Europe’2003
Problematic features (Java) • Conjecture. Let me know what you think. • The type system • Reference semantics • Low level concurrency • Generics are coming.. Ada-Europe’2003
The textbooks • A language can’t survive without good textbook, for all levels and needs. • Liskov’s book is much more suited for an academic SE course. Ada-Europe’2003
Conclusions • Ada is still a strong candidate for a teaching language for SE • Most of the technical problems can be solved rather easily. • Better error messages should help with the remaining issues. • The language isn’t the problem: Good News and Bad News • Community and Cultural roadblocks Ada-Europe’2003
Conclusions • Can we and should we try to change the way Ada is perceived in universities? • How? • Evangelism • Textbooks • GNAT • etc. Ada-Europe’2003
Thank You Any Questions? Ada-Europe’2003