Skip to main content

Advertisement

Log in

BLAKE: A language designed for Programming I

  • Published:
Education and Information Technologies Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

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.

    Article  Google Scholar 

  • Deek, F., & McHugh, J. A. (1998). A survey and critical analysis of tools for learning programming. Computer Science Education, 8(2), 130–178.

    Article  Google Scholar 

  • Dijkstra, E. (1968). Go to statement considered harmful. Communications of the ACM, 11(3), 147–148.

    Article  MathSciNet  Google Scholar 

  • Gupta, D. (2004). What is a good first programming language? Crossroads, 10(4), 1–15.

    Article  Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Article  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Ben Blake.

Appendices

Appendix A

figure afigure afigure a

Appendix B

figure 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

Reprints 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

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10639-010-9139-3

Keywords

Navigation