Abstract
The process of comprehending a problem, strategically developing a solution and translating the solution into an algorithm is arguably the single most important series of skills acquired during the education of an undergraduate computer science or information technology major. With this in mind, much care should be taken when choosing a programming language to deploy in the first University programming course. BLAKE, Beginners Language for Acquiring Key programming Essentials, is designed specifically for use in a Programming I class. BLAKE aids in enforcing fundamental object-oriented practices while simultaneously facilitating the transition to subsequent programming languages. BLAKE’s major features include; consistent parameter passing, single inheritance, non-redundant control structures, a simple development environment, and hardware independent data types. The syntax remains relatively small while still facilitating a straightforward transition to industry standard programming languages.
Similar content being viewed by others
References
Brilliant, S., & Wiseman, T. R. (1996). The first programming paradigm and language dilemma. ACM SIGCSE Bulletin, 28(1), 338–342.
Deek, F., & McHugh, J. A. (1998). A survey and critical analysis of tools for learning programming. Computer Science Education, 8(2), 130–178.
Dijkstra, E. (1968). Go to statement considered harmful. Communications of the ACM, 11(3), 147–148.
Gupta, D. (2004). What is a good first programming language? Crossroads, 10(4), 1–15.
Hudak, P., & Fasel, J. H. (1992). A Gentle Introduction to Haskell. SIGPLAN Notices, 27(5).
Kolling, M. K. (1995). Requirements for a first year object-oriented teaching language. SISCSE Technical Symposium on Computer Science Education (pp. 173–177). Nashville: ACM Press.
Kolling, M. (1999). The problem of teaching object-orineted programming, part 1: languages. Journal of Object-Oriented Programming, 11(8), 8–15.
Mannila, L., & de Raadt, M. (2006). An objective comparison of languages for teaching introductory programming. Proceedings of the 6th Baltic Sea conference on Computing education research: Koli Calling 2006 (pp. 32–37). Uppsala: ACM.
McIver, L., & Conway, D. (1996). Seven deadly sins of introductory programming language design. Proceedings of the 1996 International Conference on Software Engineering: Education and Practice (pp. 309–316). Dunedin: IEEE COmputer Society.
Parker, K., Chao, J., Ottaway, T., & Chang, J. (2006). A formal language selection process for introductory programming courses. Journal of Information Technology Education, 5, 133–151.
Raadt, M., Watson, R., & Toleman, M. (2002). Language trends in introductory programming courses. Proceedings of the Informing Science + IT Education Conference (pp. 329–337). Cork: Informing Science Institute.
Springer, G., & Friedman, D. P. (1989). Scheme and the art of programming. The Massachusetts Institute of Technology.
Wirth, N. (1971). The programming language pascal. Acta Informatica, 1, 35–63.
Author information
Authors and Affiliations
Corresponding author
Appendices
Appendix A
Appendix B
Appendix C
INPUT and OUTPUT methods
CharacterString | INPUTLINE() |
OUTPUT(CharacterString) | |
OUTPUTLINE(CharacterString) |
BooleanValue methods
BooleanValue | CONSTANTand(BooleanValue) |
BooleanValue | CONSTANTor(BooleanValue) |
BooleanValue | CONSTANTnot() |
RationalNumber methods
RationalNumber | CONSTANTadd(RationalNumber) |
RationalNumber | CONSTANTaddCharacterString(CharacterString) |
RationalNumber | CONSTANTaddIntegerNumber(IntegerNumber) |
RationalNumber | CONSTANTCOPY() |
RationalNumber | CONSTANTdivideBy(RationalNumber) |
RationalNumber | CONSTANTdivideByCharacterString(CharacterString) |
RationalNumber | CONSTANTdivideByIntegerNumber(IntegerNumber) |
BooleanValue | CONSTANTequals(RationalNumber) |
BooleanValue | CONSTANTequalsCharacterString(CharacterString) |
BooleanValue | CONSTANTequalsIntegerNumber(IntegerNumber) |
BooleanValue | CONSTANTgreaterThan(RationalNumber) |
BooleanValue | CONSTANTgreaterThanCharacterString(CharacterString) |
BooleanValue | CONSTANTgreaterThanIntegerNumber(IntegerNumber) |
BooleanValue | CONSTANTlessThan(RationalNumber) |
BooleanValue | CONSTANTlessThanCharacterString(CharacterString) |
BooleanValue | CONSTANTlessThanIntegerNumber(IntegerNumber) |
RationalNumber | CONSTANTmultiplyBy(RationalNumber) |
RationalNumber | CONSTANTmultiplyByCharacterString(CharacterString) |
RationalNumber | CONSTANTmultiplyByIntegerNumber(IntegerNumber) |
RationalNumber | CONSTANTsubtract(RationalNumber) |
RationalNumber | CONSTANTsubtractCharacterString(CharacterString) |
RationalNumber | CONSTANTsubtractIntegerNumber(IntegerNumber) |
CharacterString | CONSTANTtoCharacterString() |
IntegerNumber | CONSTANTtoIntegerNumber() |
MUTATORset(RationalNumber) | |
MUTATORsetCharacterString(CharacterString) | |
MUTATORsetDenominator(IntegerNumber) | |
MUTATORsetDenominatorCharacterString(CharacterString) | |
MUTATORsetIntegerNumber(IntegerNumber) | |
MUTATORsetNumerator(IntegerNumber) | |
MUTATORsetNumeratorCharacterString(CharacterString) | |
MUTATORsetPlaces(IntegerNumber) | |
MUTATORsetPlacesCharacterString(CharacterString) |
IntegerNumber methods
IntegerNumber | CONSTANTadd(IntegerNumber) |
IntegerNumber | CONSTANTaddCharacterString(CharacterString) |
RationalNumber | CONSTANTaddRationalNumber(RationalNumber) |
IntegerNumber | CONSTANTCOPY() |
RationalNumber | CONSTANTdivideBy(IntegerNumber) |
RationalNumber | CONSTANTdivideByCharacterString(CharacterString) |
RationalNumber | CONSTANTdivideByRationalNumber(RationalNumber) |
BooleanValue | CONSTANTequals(IntegerNumber) |
BooleanValue | CONSTANTequalsCharacterString(CharacterString) |
BooleanValue | CONSTANTequalsRationalNumber(RationalNumber) |
BooleanValue | CONSTANTgreaterThan(IntegerNumber) |
BooleanValue | CONSTANTgreaterThanCharacterString(CharacterString) |
BooleanValue | CONSTANTgreaterThanRationalNumber(RationalNumber) |
BooleanValue | CONSTANTlessThan(IntegerNumber) |
BooleanValue | CONSTANTlessThanCharacterString(CharacterString) |
BooleanValue | CONSTANTlessThanRationalNumber(RationalNumber) |
IntegerNumber | CONSTANTmultiplyBy(IntegerNumber) |
IntegerNumber | CONSTANTmultiplyByCharacterString(CharacterString) |
RationalNumber | CONSTANTmultiplyByRationalNumber(RationalNumber) |
IntegerNumber | CONSTANTsubtract(IntegerNumber) |
IntegerNumber | CONSTANTsubtractCharacterString(CharacterString) |
RationalNumber | CONSTANTsubtractRationalNumber(RationalNumber) |
CharacterString | CONSTANTtoCharacterString() |
RationalNumber | CONSTANTtoRationalNumber() |
MUTATORset(IntegerNumber) | |
MUTATORsetCharacterString(CharacterString) | |
MUTATORsetRationalNumber(RationalNumber) |
CharacterString methods
CharacterString | CONSTANTCOPY() |
BooleanValue | CONSTANTequals(CharacterString) |
CharacterString | CONSTANTgetLeft(IntegerNumber) |
IntegerNumber | CONSTANTgetLength() |
CharacterString | CONSTANTgetRight(IntegerNumber) |
BooleanValue | CONSTANTgreaterThan(CharacterString) |
BooleanValue | CONSTANTisAlpha() |
BooleanValue | CONSTANTlessThan(CharacterString) |
IntegerNumber | CONSTANTtoIntegerNumber() |
RationalNumber | CONSTANTtoRationalNumber() |
MUTATORappend(CharacterString) | |
MUTATORset(CharacterString) | |
MUTATORsetIntegerNumber(IntegerNumber) | |
MUTATORsetRationalNumber(RationalNumber) | |
MUTATORtoLowerCase() | |
MUTATORtoUpperCase() |
Rights and permissions
About this article
Cite this article
Blake, B. BLAKE: A language designed for Programming I. Educ Inf Technol 15, 277–291 (2010). https://doi.org/10.1007/s10639-010-9139-3
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10639-010-9139-3