Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3593342.3593352acmotherconferencesArticle/Chapter ViewAbstractPublication PageswccceConference Proceedingsconference-collections
research-article

spy3: A Python Subset for CS1

Published: 19 July 2023 Publication History
  • Get Citation Alerts
  • Abstract

    Simple Python 3, or spy3, is a system for CS1 that filters students’ Python code and limits it to a subset of the Python language matching what is taught in the course. At the same time, spy3 provides improved error diagnostics for common novice problems, along with enhanced features for CS1 use, like the ability to see an execution trace of a running Python program. A web-based turtle graphics module added to spy3 made the system feasible for remote use by students, regardless of their computing device. We describe spy3’s features, its implementation, and our experience using it with a large introductory Python class.

    References

    [1]
    A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman. 2007. Compilers: Principles, Techniques, & Tools (2nd ed.). Addison-Wesley.
    [2]
    A. Aiken. 1996. Cool: A Portable Project for Teaching Compiler Construction. ACM SIGPLAN Notices 31, 7 (1996), 19–24.
    [3]
    A. W. Appel. 1998. Modern Compiler Implementation in Java. Cambridge University Press.
    [4]
    K. Atteson, M. Lorenz, and W. F. Dowling. 1989. NARPL: A solution to the student compiler project problem. ACM SIGPLAN Notices 24, 3 (1989), 57–66.
    [5]
    J. W. Atwood and E. Regener. 1981. Teaching Subsets of Pascal. In 12th SIGCSE Symposium on Computer Science Education. 96–103.
    [6]
    J. Aycock. 2002. The Design and Implementation of SPARK, a Toolkit for Implementing Domain-Specific Languages. Journal of Computing and Information Technology 10, 1 (2002), 55–66.
    [7]
    J. Aycock. 2012. μ Python: Non-Majors Programming from the Very First Lecture. In 17th ACM Annual Conference on Innovation and Technology in Computer Science Education. 345–350.
    [8]
    J. Bentley. 1985. Programming Pearls: Bumper-Sticker Computer Science. Commun. ACM 28, 9 (1985), 896–901.
    [9]
    P. Brusilovsky, E. Calabrese, J. Hvorecky, A. Kouchnirenko, and P. Miller. 1997. Mini-languages: a way to learn programming principles. Education and Information Technologies 2 (1997), 64–83.
    [10]
    P. Brusilovsky, A. Kouchnirenko, P. Miller, and I. Tomek. 1994. Teaching programming to novices: a review of approaches and tools. In ED-MEDIA 94—World Conference on Educational Multimedia and Hypermedia. 103–110. https://files.eric.ed.gov/fulltext/ED388228.pdf
    [11]
    M. Conway, R. Pausch, R. Gossweiler, and T. Burnette. 1994. Alice: A Rapid Prototyping System for Building Virtual Environments. In Conference Companion, ACM Conference on Human Factors in Computer Systems. 295–296.
    [12]
    S. Cooper. 2010. The Design of Alice. ACM Transactions on Computing Education 10, 4, Article 15 (2010), 16 pages.
    [13]
    S. Davies, J. A. Polack-Wahl, and K. Anewalt. 2011. A Snapshot of Current Practices in Teaching the Introductory Programming Sequence. In 42nd ACM Technical Symposium on Computer Science Education. 625–630.
    [14]
    M. de Raadt, R. Watson, and M. Toleman. 2002. Language Trends in Introductory Programming Courses. In Informing Science + IT Education Conference. 329–337.
    [15]
    M. de Raadt, R. Watson, and M. Toleman. 2003. Language Tug-Of-War: Industry Demand and Academic Choice. In 5th Australasian Conference on Computing Education. 137–142.
    [16]
    F. Hermans. 2020. Hedy: A Gradual Language for Programming Education. In ACM Conference on International Computing Education Research. 259–270.
    [17]
    R. C. Holt and J. R. Cordy. 1988. The Turing Programming Language. Commun. ACM 31, 12 (1988), 1410–1423.
    [18]
    R. C. Holt, D. B. Wortman, D. T. Barnard, and J. R. Cordy. 1977. SP/k: A System for Teaching Computer Programming. Commun. ACM 20, 5 (1977), 301–309.
    [19]
    Association for Computing Machinery (ACM) Joint Task Force on Computing Curricula and IEEE Computer Society. 2013. Computer Science Curricula 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science. ACM. https://doi.org/10.1145/2534860
    [20]
    M. Kölling. 2010. The Greenfoot Programming Environment. ACM Transactions on Computing Education 10, 4, Article 14 (2010), 21 pages.
    [21]
    T. E. Kurtz. 1978. BASIC. In History of Programming Languages. ACM, 515–537.
    [22]
    S. P. Levy. 1995. Computer Language Usage in CS1: Survey Results. ACM SIGCSE Bulletin 27, 3 (1995), 21–26.
    [23]
    K. C. Louden. 1997. Compiler Construction: Principles and Practice. PWS Publishing.
    [24]
    J. Maloney, M. Resnick, N. Rusk, B. Silverman, and E. Eastmond. 2010. The Scratch Programming Language and Environment. ACM Transactions on Computing Education 10, 4, Article 16 (2010), 15 pages.
    [25]
    L. Morgado and K. Kahn. 2009. Towards a specification of the ToonTalk language. Journal of Visual Languages and Computing 19, 5 (2009), 574–597.
    [26]
    R. E. Pattis. 1981. Karel the Robot: A Gentle Introduction to the Art of Programming with Pascal. Wiley.
    [27]
    S. Pemberton. 1987. An Alternative Simple Language and Environment for PCs. IEEE Software 4, 1 (1987), 56–64.
    [28]
    Python Software Foundation. [n. d.]. Why was Python created in the first place?Retrieved 19 Mar 2023 from https://docs.python.org/3/faq/general.html#why-was-python-created-in-the-first-place
    [29]
    J. L. Rankin. 2018. A People’s History of Computing in the United States. Harvard University Press.
    [30]
    R. J. Reid. 13 April 1990. CS First-Language Summary. Usenet post to comp.edu newsgroup, message-ID [email protected].
    [31]
    R. J. Reid. 17 May 1991. CS Majors First Language–Yearly Listing. Usenet post to comp.edu newsgroup, message-ID [email protected].
    [32]
    E. Roberts. 2001. An Overview of MiniJava. In 32nd SIGCSE Technical Symposium on Computer Science Education. 1–5.
    [33]
    R. M. Siegfried, D. M. Greco, N. G. Micelli, and J. P. Siegfried. 2012. Whatever Happened to Richard Reid’s List of First Programming Languages?Information Systems Education Journal 10, 4 (2012), 24–30.
    [34]
    R. M. Siegfried, K. G. Herbert-Berger, K. Leune, and J. P. Siegfried. 2021. Trends of Commonly Used Programming Languages in CS1 and CS2 Learning. In 16th International Conference on Computer Science & Education. 407–412.
    [35]
    R. M. Siegfried, J. P. Siegfried, and G. Alexandro. 2016. A Longitudinal Analysis of the Reid List of First Programming Languages. Information Systems Education Journal 14, 6 (2016), 47–54.
    [36]
    C. Solomon, B. Harvey, K. Kahn, H. Lieberman, M. L. Miller, M. Minsky, A. Papert, and B. Silverman. 2020. History of Logo. Proceedings of the ACM on Programming Languages 4, HOPL, Article 79 (2020), 66 pages.
    [37]
    F. L. Van Scoy. 12 July 2000. The Return of the Reid List. Usenet post to comp.edu newsgroup, message-ID [email protected].
    [38]
    F. L. Van Scoy. 25 October 2006. Reid list 25. Usenet post to comp.edu newsgroup, message-ID [email protected].
    [39]
    N. Wirth. 1971. The Programming Language Pascal. Acta Informatica 1, 1 (1971), 35–63.

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Other conferences
    WCCCE '23: Proceedings of the 25th Western Canadian Conference on Computing Education
    May 2023
    83 pages
    ISBN:9798400707896
    DOI:10.1145/3593342
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 19 July 2023

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. CS1
    2. Python
    3. language subset

    Qualifiers

    • Research-article
    • Research
    • Refereed limited

    Conference

    WCCCE '23

    Acceptance Rates

    Overall Acceptance Rate 78 of 117 submissions, 67%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • 0
      Total Citations
    • 32
      Total Downloads
    • Downloads (Last 12 months)24
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 10 Aug 2024

    Other Metrics

    Citations

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    HTML Format

    View this article in HTML Format.

    HTML Format

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media