Essays in computing science
The case for case studies of programming problems
Communications of the ACM
Supporting Pascal programming with an on-line template library and case studies
International Journal of Man-Machine Studies
Using C in CS1: evaluating the Stanford experience
SIGCSE '93 Proceedings of the twenty-fourth SIGCSE technical symposium on Computer science education
The “procedures early” approach in CS 1: a heresy
SIGCSE '93 Proceedings of the twenty-fourth SIGCSE technical symposium on Computer science education
Simply Scheme: introducing computer science
Simply Scheme: introducing computer science
Computer science needs an insight-based curriculum
SIGCSE '94 Proceedings of the twenty-fifth SIGCSE symposium on Computer science education
Undergraduate computer science education: a new curriculum philosophy & overview
SIGCSE '94 Proceedings of the twenty-fifth SIGCSE symposium on Computer science education
A three-fold introduction to computer science
SIGCSE '94 Proceedings of the twenty-fifth SIGCSE symposium on Computer science education
A philosophy and example of CS-1 programming projects
SIGCSE '90 Proceedings of the twenty-first SIGCSE technical symposium on Computer science education
Computing Fundamentals with C++ - Second Edition
Computing Fundamentals with C++ - Second Edition
Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs
Toward a first course based on object-oriented patterns
SIGCSE '96 Proceedings of the twenty-seventh SIGCSE technical symposium on Computer science education
Object-centered design: a five-phase introduction to object-oriented programming in CS1–2
SIGCSE '96 Proceedings of the twenty-seventh SIGCSE technical symposium on Computer science education
Foundations of computer science: what are they and how do we teach them?
ITiCSE '96 Proceedings of the 1st conference on Integrating technology into computer science education
Using multimedia and GUI programming in CS 1
ITiCSE '96 Proceedings of the 1st conference on Integrating technology into computer science education
The supplemental proceedings of the conference on Integrating technology into computer science education: working group reports and supplemental proceedings
Application-based modules using apprentice learning for CS 2
SIGCSE '97 Proceedings of the twenty-eighth SIGCSE technical symposium on Computer science education
Incorporating problem-solving patterns in CS1
SIGCSE '98 Proceedings of the twenty-ninth SIGCSE technical symposium on Computer science education
Design patterns: an essential component of CS curricula
SIGCSE '98 Proceedings of the twenty-ninth SIGCSE technical symposium on Computer science education
Historical perspectives on the computing curriculum
ACM SIGCUE Outlook - Special issue: ITiCSE '97 working group papers
Toolkits in first year computer science: a pedagogical imperative
Proceedings of the thirty-first SIGCSE technical symposium on Computer science education
Empirical investigation throughout the CS curriculum
Proceedings of the thirty-first SIGCSE technical symposium on Computer science education
Bugs as features: teaching network protocols through debugging
Proceedings of the thirty-first SIGCSE technical symposium on Computer science education
Enhancing apprentice-based learning of Java
Proceedings of the 35th SIGCSE technical symposium on Computer science education
Graduate students learning strategies through research collaboration
Proceedings of the 9th annual SIGCSE conference on Innovation and technology in computer science education
Revealing the programming process
Proceedings of the 36th SIGCSE technical symposium on Computer science education
Constructivist approaches for teaching computer programming
Proceedings of the 6th conference on Information technology education
A Puzzles-First approach to computer science
Proceedings of the 11th annual SIGCSE conference on Innovation and technology in computer science education
Using puzzles: problem-solving and abstraction
Proceedings of the 8th ACM SIGITE conference on Information technology education
Proceedings of the 41st ACM technical symposium on Computer science education
Extreme apprenticeship method in teaching programming for beginners
Proceedings of the 42nd ACM technical symposium on Computer science education
Extreme apprenticeship method: key practices and upward scalability
Proceedings of the 16th annual joint conference on Innovation and technology in computer science education
Management, structures and tools to scale up personal advising in large programming courses
Proceedings of the 2011 conference on Information technology education
A data-centric introduction to computer science for non-majors
Proceeding of the 44th ACM technical symposium on Computer science education
Hi-index | 0.00 |
We have developed an application-based approach to introductory courses in computer science. This approach follows an apprenticeship model of learning, where students begin by reading, studying, and extending programs written by experienced and expert programmers. Applications play a central role since programming constructs are motivated and introduced in the context of applications, not the other way around as is the tradition in most texts and courses. Under our applied approach, (1) students are able to learn from interesting real-world examples, (2) the synthesis of different programming constructs is supported using incremental examples, and (3) good design is stressed vis code and concept reuse. In this paper, we provide several examples of our method as well as pointers to all the material we have developed which is freely available electronically. The philosophy underlying this method transcends a particular programming language, but we present our examples using C++ since that is the language used in the CS 1 and CS 2 courses at Duke. This method has been used with equal success using ISETL at Dickinson.