Elliot Koffman

Last updated
Elliot Bruce Koffman
Born (1942-05-07) May 7, 1942 (age 79)
Nationality American
Occupation Computer scientist
Known forEducational development and textbooks

Elliot Bruce Koffman (born 7 May 1942 in Boston, Massachusetts) [1] is a noted computer scientist and educationist. He is the author of numerous widely used introductory textbooks for more than 10 [2] different programming languages, including Ada, BASIC, C, C++, FORTRAN, Java, Modula-2, and Pascal. Since 1974, he has been a professor of computer and information sciences at Temple University, Philadelphia, Pennsylvania.

Contents

Education and career

Koffman attended the Massachusetts Institute of Technology, where he earned his Bachelor of Engineering and Master of Engineering degrees in 1964. He received his PhD in 1967 at Case Institute of Technology with a dissertation on learning games through pattern recognition. [3]

That same year, Koffman began work at the National Security Agency in Fort Meade, Maryland as an electrical engineer. He was promoted to captain of the U.S. Army and assigned to the Defense Intelligence Agency in Washington, D.C. from 1967 to 1969. [1]

Koffman also began his teaching career in 1967, serving as a professorial lecturer at George Washington University, Washington, D.C. (19671969); an Assistant Professor (19691972) and Associate Professor (19721974) in the Department of Electrical Engineering and Computer Science at the University of Connecticut; and an Associate Professor (19741978) and Full Professor (1978present) in the Department of Computer and Information Sciences at Temple University. [1]

Koffman's early research was in artificial intelligence and intelligent tutoring systems. In 1974 he began writing and co-authoring textbooks for introductory programming courses for computer science majors (CS1) in programming languages such as Ada, BASIC, C, C++, Fortran, Java, Modula-2, and Pascal. He also wrote textbooks for the first data structures course (CS2) in C++, Java, and Pascal. [2]

In 2009 he was awarded the SIGCSE Outstanding Contribution Award "for an extraordinary record of teaching, curriculum development, publishing papers as well as numerous textbooks, and for helping to shape Computer Science education". [4]

Other activities

Koffman chaired the Association for Computing Machinery (ACM) task force to revise CS1 and CS2 courses from 1983 to 1985. He was also chairman of the ACM Special Interest Group in Computer Science Education (SIGCSE) from 1987 to 1991. [2]

Family

Koffman married Caryn Jackson [5] in 1963. [3] She is a photographer whose work has won awards [6] and has been featured in a local gallery. [7] They have three children, Richard, Deborah and Robin. They live in Elkins Park, Pennsylvania. [5]

Bibliography

Related Research Articles

Ada is a structured, statically typed, imperative, and object-oriented high-level programming language, extended from Pascal and other languages. It has built-in language support for design by contract (DbC), extremely strong typing, explicit concurrency, tasks, synchronous message passing, protected objects, and non-determinism. Ada improves code safety and maintainability by using the compiler to find errors in favor of runtime errors. Ada is an international technical standard, jointly defined by the International Organization for Standardization (ISO), and the International Electrotechnical Commission (IEC). As of 2020, the standard, called Ada 2012 informally, is ISO/IEC 8652:2012.

Data structure Particular way of storing and organizing data in a computer

In computer science, a data structure is a data organization, management, and storage format that enables efficient access and modification. More precisely, a data structure is a collection of data values, the relationships among them, and the functions or operations that can be applied to the data, i.e., it is an algebraic structure about data.

Niklaus Wirth Swiss computer scientist

Niklaus Emil Wirth is a Swiss computer scientist. He has designed several programming languages, including Pascal, and pioneered several classic topics in software engineering. In 1984, he won the Turing Award, generally recognized as the highest distinction in computer science, for developing a sequence of innovative computer languages.

Programming language Language for communicating instructions to a machine

A programming language is a formal language comprising a set of strings that produce various kinds of machine code output. Programming languages are one kind of computer language, and are used in computer programming to implement algorithms.

This is a "genealogy" of programming languages. Languages are categorized under the ancestor language with the strongest influence. Those ancestor languages are listed in alphabetical order. Any such categorization has a large arbitrary element, since programming languages often incorporate major ideas from multiple sources.

In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. Rather, it is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.

In computer science, a high-level programming language is a programming language with strong abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language elements, be easier to use, or may automate significant areas of computing systems, making the process of developing a program simpler and more understandable than when using a lower-level language. The amount of abstraction provided defines how "high-level" a programming language is.

In computer science, imperative programming is a programming paradigm that uses statements that change a program's state. In much the same way that the imperative mood in natural languages expresses commands, an imperative program consists of commands for the computer to perform. Imperative programming focuses on describing how a program operates.

Robert Sedgewick (computer scientist) American computer scientist

Robert Sedgewick is the founding chair and the William O. Baker Professor in Computer Science at Princeton University and was a member of the board of directors of Adobe Systems (1990-2016). He previously served on the faculty at Brown University and has held visiting research positions at Xerox PARC, Institute for Defense Analyses, and INRIA. His research expertise is in algorithm science, data structures, and analytic combinatorics. He is also active in developing the college curriculum in computer science and in harnessing technology to make that curriculum available to anyone seeking the opportunity to learn from it.

History of programming languages

The history of programming languages spans from documentation of early mechanical computers to modern tools for software development. Early programming languages were highly specialized, relying on mathematical notation and similarly obscure syntax. Throughout the 20th century, research in compiler theory led to the creation of high-level programming languages, which use a more accessible syntax to communicate instructions.

Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.

In computer science, object composition is a way to combine objects or data types into more complex ones. Common kinds of compositions are objects used in object-oriented programming, tagged unions, sets, sequences, and various graph structures. Object compositions relate to, but are not the same as, data structures.

Concurrent computing is a form of computing in which several computations are executed concurrently—during overlapping time periods—instead of sequentially—with one completing before the next starts.

Daniel D. McCracken was a computer scientist in the United States. He was a Professor of Computer Sciences at the City College of New York, and the author of over two dozen textbooks on computer programming, with an emphasis on guides to programming in widely used languages such as Fortran and COBOL. His A Guide to Fortran Programming and its successors were the standard textbooks on that language for over two decades. His books have been translated into fourteen languages.

<i>Walls and Mirrors</i> Computer science textbook

Walls And Mirrors is a computer science textbook, for undergraduates taking a second computer science course, originally written by Paul Helman and Robert Veroff. The book attempts to strike a balance between being too mathematically rigorous and formal, and being so informal, practical, and hands-on that computer science theory is not taught.

GoTo is a statement found in many computer programming languages. It performs a one-way transfer of control to another line of code; in contrast a function call normally returns control. The jumped-to locations are usually identified using labels, though some languages use line numbers. At the machine code level, a goto is a form of branch or jump statement, in some cases combined with a stack adjustment. Many languages support the goto statement, and many do not.

Programming languages have been classified into several programming language generations. Historically, this classification was used to indicate increasing power of programming styles. Later writers have somewhat redefined the meanings as distinctions previously seen as important became less significant to current practice.

Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code: data in the form of fields, and code, in the form of procedures.

This article deals with programming languages used in the Amiga line of computers, running the AmigaOS operating system and its derivatives AROS and MorphOS. It is a split of the main article Amiga software. See also related articles Amiga productivity software, Amiga music software, Amiga Internet and communications software and Amiga support and maintenance software for other information regarding software that runs on Amiga.

References

  1. 1 2 3 "Curriculum Vita". Temple University. 1 October 2000. Archived from the original on 29 September 2011. Retrieved 19 July 2011.
  2. 1 2 3 "CSC Colloquium: Elliot Koffman". Villanova University. 28 April 2008. Archived from the original on 27 March 2012. Retrieved 19 July 2011.
  3. 1 2 Koffman, Elliot. "All I Really Need to Know I Learned in CS1" (PDF). Temple University. p. 8. Archived from the original (PDF) on 2012-10-12. Retrieved 2011-07-19.
  4. "Outstanding Contribution Award". Special Interest Group on Computer Science Education. Archived from the original on 3 June 2013. Retrieved 19 July 2011.
  5. 1 2 "Death Notices: Jackson". The Jewish Exponent . 20 October 2005. Archived from the original on 14 March 2012. Retrieved 19 July 2011.
  6. Pinard Bogaert, Pauline (13 November 1994). "Luncheon And Fashion Show Raise $9,500 For Scholarships To Nurses". The Philadelphia Inquirer . Retrieved 19 July 2011.
  7. Dove, Pheralyn (22 April 1996). "Gallery Highlights Works Of 3 Women: The Artforms Exhibit Features Sculpture, Paintings And Photographs By The 3 Montco Artists". The Philadelphia Inquirer. Retrieved 19 July 2011.