60,953 research outputs found

    Bricklayer: An Authentic Introduction to the Functional Programming Language SML

    Full text link
    Functional programming languages are seen by many as instrumental to effectively utilizing the computational power of multi-core platforms. As a result, there is growing interest to introduce functional programming and functional thinking as early as possible within the computer science curriculum. Bricklayer is an API, written in SML, that provides a set of abstractions for creating LEGO artifacts which can be viewed using LEGO Digital Designer. The goal of Bricklayer is to create a problem space (i.e., a set of LEGO artifacts) that is accessible and engaging to programmers (especially novice programmers) while providing an authentic introduction to the functional programming language SML.Comment: In Proceedings TFPIE 2014, arXiv:1412.473

    Academic Programs Adequate For The Software Profession?

    Get PDF
    According to the Bureau of Labor Statistics, close to 1.8 million people, or 77% of all computer professionals, were working in the design, development, deployment, maintenance, and management of software in 2006.  The ACM model curriculum for the BS in computer science proposes that about 42% of the core body of knowledge be dedicated to software engineering, including programming.  An examination of the curriculum of a typical computer science department shows that, excluding programming courses, no courses specific to software engineering are required for the BS, although several are available as elective courses.  Academics typically resist the demands of the industry, in part because some of them are for specific software tools, design methods, or programming languages whose use does not last.  Under market pressure, more required software engineering courses may slowly be included in the curriculum.  The usual solution is for businesses to offer their software professionals needed courses in software engineering

    Exploring Computer Science: Coding Can Be Fun

    Get PDF
    The focus of this project is to adopt a course/curriculum that builds interest in computer science and appeals to high school students through a variety of programs and activities. One of our goals is to increase interest in computer science among high school students especially minority and female students. Students will learn how to use programming languages, utilize higher level problem solving and program robots using the skills they acquired. The course, Exploring Computer Science, gives students the opportunity to learn a variety of computer science topics and have fun doing it

    Adventures in data types : benefits of the comparative approach in computer science education.

    Get PDF
    The transition from ’structured programming’ to ’object-oriented pro- gramming’ is a canon of the computer science curriculum; traditionally presented, or tacitly acknowledged, as the transition from beginner to intermediate programmer, the passage from one programming language to multiple ones (covering CS1 and CS2, in various ways). In this other addition to computer science education, we defend the benefits of a com- parative approach : knowledge in one language gains the student access to a world of other languages, and ways to model reality. This goes con- trary to prevalent methods of focusing on one language to introduce these topics, as common with mainstream, ”pure” computer scientists

    Programming Environments for Children: Creating a Language that Grows with you

    Get PDF
    Recent efforts have increased the number of elementary and middle schools teaching computer science — but do they have the right tools for the job? Elementary school teachers are usually responsible for teaching all subjects, and often do not have a background or training in computer science. Fourth through sixth grade students are still developing their math and reading skills as well as learning how to type and use computers. Fortunately, computer science is one of the only domains that can adapt to meet the needs of the user. Unlike math or physics, computer science has few constants; computers, languages, and development environments have changed over the last decades and will continue to evolve. How can programming languages and environments better meet the needs of upper elementary classes learning computer science? This paper looks at designing block-based programming environments for upper elementary school students as a part of a larger research study on early computer science education. Block-based programming environments let children create complex, visual programs without worrying about compiling or syntax errors. This paper describes the research studies completed in the design and implementation of block-based programming environments created alongside the development of KELP-CS, a computational thinking curriculum for 4th — 6th grade. Both the programming environment and curriculum were piloted in schools across California as part of a design-based research project

    C-Sheep: Controlling Entities in a 3D Virtual World as a Tool for Computer Science Education

    Get PDF
    One of the challenges in teaching computer science in general and computer programming in particular is to maintain the interest of students, who often perceive the subject as difficult and tedious. To this end, we introduce C-Sheep, a mini-language-like system for computer science education, using a state of the art rendering engine, usually found in entertainment systems. The intention is to motivate students to spend more time programming, which can be achieved by providing an enjoyable experience. Computer programming is an essential skill for software developers and as such is always an integral part of every computer science curriculum. However, even if students are pursuing a computer science related degree, it can be very difficult to interest them in the act of computer programming, the writing of software, itself. In the C-Sheep system this is addressed by using the visual gimmickry of modern computer games, which allows programs to provide instant visualisation of algorithms. This visual feedback is invaluable to the understanding of how the algorithm works, and - if there are unintended results - how errors in the program can be debugged. The C-Sheep programming language is a (100% compatible) subset of the ANSI C programming language. Apart from just being a tool for learning the basics of the C programming language, C-Sheep implements the C control structures that are required for teaching the basic computer science principles encountered in structured programming. Unlike other teaching languages which have minimal syntax and which are variable free to provide an environment with minimal complexity, C-Sheep allows the declaration and use of variables. C-Sheep also supports the definition of sub-routines (functions) which can be called recursively. "The Meadow" virtual environment is the virtual world in which entities (in our case sheep) controlled by C-Sheep programs exist. This micro world provides a graphical representation of the algorithms used in the programs controlling the virtual entities. Their position and orientation within the virtual world visualise the current state of the program. "The Meadow" is based on our proprietary "Crossbow" game engine which incorporates a virtual machine for executing CSheep programs. The Crossbow Engine is a compact game engine which is flexible in design and offers a number of features common to more complex engines. The Crossbow Virtual Machine used with C-Sheep in "The Meadow" - an improvement on the ZBL/0 virtual machine - is a module of the Crossbow Engine. The C-Sheep system also provides a counterpart library for C, mirroring the CSheep library functions of the virtual machine. This allows C-Sheep programs to be compiled into an executable using a normal off-the-shelf C/C++ compiler. This executable can then be run from within the native working environment of the operating system. The purpose of this library is to simplify the migration from the educational mini-language to real-world systems by allowing novice programmers to make an easy transition from using the C-Sheep system to using the C programming language

    An Analysis of Introductory Programming Courses at UK Universities

    Get PDF
    Context: In the context of exploring the art, science and engineering of programming, the question of which programming languages should be taught first has been fiercely debated since computer science teaching started in universities. Failure to grasp programming readily almost certainly implies failure to progress in computer science.Inquiry: What first programming languages are being taught? There have been regular national-scale surveys in Australia and New Zealand, with the only US survey reporting on a small subset of universities. This the first such national survey of universities in the UK.Approach: We report the results of the first survey of introductory programming courses (N=80) taught at UK universities as part of their first year computer science (or related) degree programmes, conducted in the first half of 2016. We report on student numbers, programming paradigm, programming languages and environment/tools used, as well as the underpinning rationale for these choices.Knowledge: The results in this first UK survey indicate a dominance of Java at a time when universities are still generally teaching students who are new to programming (and computer science), despite the fact that Python is perceived, by the same respondents, to be both easier to teach as well as to learn.Grounding: We compare the results of this survey with a related survey conducted since 2010 (as well as earlier surveys from 2001 and 2003) in Australia and New Zealand.Importance: This survey provides a starting point for valuable pedagogic baseline data for the analysis of the art, science and engineering of programming, in the context of substantial computer science curriculum reform in UK schools, as well as increasing scrutiny of teaching excellence and graduate employability for UK universities

    Defining the Competencies, Programming Languages, and Assessments for an Introductory Computer Science Course

    Get PDF
    The purpose of this study was to define the competencies, programming languages, and assessments for an introductory computer science course at a small private liberal arts university. Three research questions were addressed that involved identifying the competencies, programming languages, and assessments that academic and industry experts in California’s Central Valley felt most important and appropriate for an introduction to computer science course. The Delphi methodology was used to collect data from the two groups of experts with various backgrounds related to computing. The goal was to find consensus among the individual groups to best define aspects that would best comprise an introductory CS0 course for majors and non-majors. The output would be valuable information to be considered by curriculum designers who are developing a new program in software engineering at the institution. The process outlined would also be useful to curriculum designers in other fields and geographic regions who attempt to address their local education needs. Four rounds of surveys were conducted. The groups of experts were combined in the first round to rate the items in the straw models determined from the literature and add additional components when necessary. The academic and industry groupings were separated for the remainder of the study so that a curriculum designer could determine not only the items deemed most important, but also their relative importance among the two distinct groups. The experts selected items in each of the three categories in the second round to reduce the possibilities for subsequent rounds. The groups were then asked to rank the items in each of the three categories for the third round. A fourth round was held as consensus was not reached by either of the groups for any of the categories as determined by Kendall’s W. The academic experts reached consensus on a list of ranked competencies in the final round and showed a high degree of agreement on lists of ranked programming languages and assessments. Kendall’s W, values, however, were just short of the required 0.7 threshold for consensus on these final two items. The industry experts did not reach consensus and showed low agreement on their recommendations for competencies, programming languages, and assessments

    An Analysis of Pre-service Teachers' Learning Process in Programming Learning

    Get PDF
    As the importance of computing technology increases, computer science education is being actively implemented around the world. Because computer science education is being introduced into the curriculum, research on how to effectively teach programming (which is the core of automation) is actively underway. Although the importance of block-based programming languages has increased, most studies have focused on text-based programming languages. As interest in programming increases, block-based programming languages will be taught to a variety of audiences. Therefore, this study analyzed Code.org, which provides a development environment for block-based programming; this study then investigated the programming learning process of pre-service teachers, who used Code.org. Sixteen pre-service teachers participated in the study, and their learning processes were uncovered by analyzing their programming results. This suggests that pre-service teachers can learn sequential and necessary repetition without difficulty. However, the pre-service teachers failed to use the repetition block through abstraction. Besides, for While and Until, pre-service teachers did not understand the concept of repeating according to the condition. For Counter, pre-service teachers had difficulty repeating the use of variables. In the condition, pre-service teachers were not able to separate the command, which should be executed when the condition is True and when it is False. For Event, pre-service teachers had no problem utilizing the function, but they were not able to call the function with a parameter. Based on this, it was confirmed that a pre-service teacher can understand the principle of programming development in advance by understanding the abstraction, condition, and variable in the loop statement. In this study, there was a limit to practicing block-based programming language due to the platform’s low scalability. Future research should solve these problems and diversify the research subjects

    Megoldáskereső algoritmusok programozása Racket nyelven: Programming search algorithms in Racket

    Get PDF
    Functional programming languages have been closely related to the field of artificial intelligence since it was born. In recent years, we have presented the most important search algorithms using object-oriented approach at the Faculty of Informatics, University of Debrecen. With the modernization of the curriculum of the Computer Science BSc program, a new subject called High-Level Programming Languages 3 was created, which is intended to present programming languages based on the functional paradigm. In this paper, we show how the algorithms introduced in the object-oriented world can be implemented in a purely functional environment, namely in Racket programming language. Kivonat A mesterséges intelligencia tudományterületéhez már megszületésétől kezdve szorosan kapcsolódtak a funkcionális programozási nyelvek. A Debreceni Egyetem Informatikai Karán az elmúlt években objektumorientált megközelítésben ismertettük a legfontosabb megoldáskereső algoritmusokat. Amióta megtörtént a programtervező informatikus BSc szak mintatantervének korszerűsítése, megjelent benne a Magas szintű programozási nyelvek 3 tárgy, amely kifejezetten a funkcionális paradigmán alapuló programozási nyelveket mutatja be. Cikkünkben azt mutatjuk be, hogy hogyan lehet az objektumorientált világban már megismert algoritmusokat tisztán funkcionális környezetben, jelesül Racket nyelven is implementálni
    corecore