316,659 research outputs found

    Teaching and Learning Tools for Introductory Programming in University Courses

    Get PDF
    Difficulties in teaching and learning introductory programming have been studied over the years. The students' difficulties lead to failure, lack of motivation, and abandonment of courses. The problem is more significant in computer courses, where learning programming is essential. Programming is difficult and requires a lot of work from teachers and students. Programming is a process of transforming a mental plan into a computer program. The main goal of teaching programming is for students to develop their skills to create computer programs that solve real problems. There are several factors that can be at the origin of the problem, such as the abstract concepts that programming implies; the skills needed to solve problems; the mental skills needed to decompose problems; many of the students never had the opportunity to practice computational thinking or programming; students must know the syntax, semantics, and structure of a new unnatural language in a short period of time. In this work, we present a set of strategies, included in an application, with the objective of helping teachers and students. Early identification of potential problems and prompt response is critical to preventing student failure and reducing dropout rates. This work also describes a predictive machine learning (neural network) model of student failure based on the student profile, which is built over the course of programming lessons by continuously monitoring and evaluating student activities

    Mechanization of program construction in Martin-Loef's theory of types

    Get PDF
    The constructive approach to the problem of program correctness dates to the late 1960’s. During the early 1970’s interest developed in the application of constructive logics to the derivation of provably correct programs. Martin-Loef's Theory of Types was devised as a formalisation of constructive mathematics. His theory also integrates the processes of program construction and verification within a single deductive system. This thesis is concerned with the application of Martin-Loef's theory to the task of program construction. In particular, the mechanisation of this task is investigated. We begin with a comparative study of current implementations of constructive type theory. The aim of the study is to assess the suitability of the implementations in the role of programming assistant. A proposal for a more effective programming assistant is presented. A principal difficulty in constructing correct programs is the problem of scale. Computer assistance plays an essential role in alleviating this problem. Experience in performing formal proof provides a better understanding of this problem and is, therefore, an important aid to the development of computer assistance. For this reason the formal derivation of a generalised table look-up function was undertaken. This exercise in program construction revealed that a disproportionate amount of the overall proof effort was taken up with proving negations. A proof of a negation has no computational content; it contributes only to the correctness of the synthesized program. With the aim of freeing the programmer from those proof obligations a decision method for negation was developed. This decision method exploits, and thereby demonstrates, the uniform structure of Martin-Loef's theory. This uniformity is further utilized in a scheme for automatically deriving primitive recursive functions. The scheme enables the formal introduction of definitions during the course of a proof which satisfy the constraints of primitive recursion

    Outcomes, perceptions, and experiences in one CPED-aligned educational doctorate (EdD) program

    Get PDF
    EdD programming has been questioned because of lack of clarity in the initial degree construction and confusion regarding its unique focus on enhancing practice. An improved, coherent focus was developed through the Carnegie Project on the Educational Doctorate (CPED). To understand the changes happening in CPED-influenced EdD programs, studies conducted within these newly-revised programs are vital. The current mixed-methods study explored perceptions of education doctoral (EdD) students in a CPED-Influenced program at one Midwestern university (n=36 for survey; n=8 for interviews). The research questions examined: (a) the successful completion of outcomes in the program; (b) the influence of the seven outcomes on the students in the program; and (c) being a full-time or part-time student in the program. In the first data collection phase, survey participants rated themselves at the average (3.07) to slightly above average (4.08) level for all seven outcomes, showing students perceived program outcomes as being met. The highest level of proficiency rated was the outcome Research in Practice (4.08), and the lowest was the outcome Organizational Change (3.07). In comparing old program students to new program students, there were no significant differences in their perceptions of proficiency for program outcomes. There were no significant differences between full and part-time students in their perceptions of proficiency for program outcomes; however, calculations of specific benchmark revealed one significant difference and a medium effect size (Cohen’s d= 0.59) favoring full-time students for the benchmark “Students understand program delivery models and their implications for practice.” The second and third data collection were conducted through qualitative interviews. Emerging themes included the transformative change in the ways students think, invested and professional faculty members acting as mentors, collaboration with and diversity among peers, flexibility of the programming structure and course requirements, the focus on quality research in practice, and the application of learning. Many advantages and a few disadvantages were identified for both full-time and part-time students; however, satisfaction with the option to be full-time or part-time was the primary finding

    Masters Students' Experiences of Learning to Program: An Empirical Model

    Get PDF
    The investigation reported here examined how Masters students experience learning to program. The phenomenographic research approach adopted permitted the analysis of 1) how students go about learning to program, that is the ‘Act’ of learning to program, and 2) what students understand by ‘programming’, that is the ‘Object’ of learning to program. Analysis of data from twenty-three participants identified five different experiences of the Act of learning to program and five different experiences of the Object of learning to program. Together the findings comprise an empirical model of the learning to program experience amongst the participating students. We suggest how our findings are significant for programming teachers and offer tools to explore students’ views

    Forty hours of declarative programming: Teaching Prolog at the Junior College Utrecht

    Full text link
    This paper documents our experience using declarative languages to give secondary school students a first taste of Computer Science. The course aims to teach students a bit about programming in Prolog, but also exposes them to important Computer Science concepts, such as unification or searching strategies. Using Haskell's Snap Framework in combination with our own NanoProlog library, we have developed a web application to teach this course.Comment: In Proceedings TFPIE 2012, arXiv:1301.465

    Teaching Parallel Programming Using Java

    Full text link
    This paper presents an overview of the "Applied Parallel Computing" course taught to final year Software Engineering undergraduate students in Spring 2014 at NUST, Pakistan. The main objective of the course was to introduce practical parallel programming tools and techniques for shared and distributed memory concurrent systems. A unique aspect of the course was that Java was used as the principle programming language. The course was divided into three sections. The first section covered parallel programming techniques for shared memory systems that include multicore and Symmetric Multi-Processor (SMP) systems. In this section, Java threads was taught as a viable programming API for such systems. The second section was dedicated to parallel programming tools meant for distributed memory systems including clusters and network of computers. We used MPJ Express-a Java MPI library-for conducting programming assignments and lab work for this section. The third and the final section covered advanced topics including the MapReduce programming model using Hadoop and the General Purpose Computing on Graphics Processing Units (GPGPU).Comment: 8 Pages, 6 figures, MPJ Express, MPI Java, Teaching Parallel Programmin

    Curriculum Guidelines for Undergraduate Programs in Data Science

    Get PDF
    The Park City Math Institute (PCMI) 2016 Summer Undergraduate Faculty Program met for the purpose of composing guidelines for undergraduate programs in Data Science. The group consisted of 25 undergraduate faculty from a variety of institutions in the U.S., primarily from the disciplines of mathematics, statistics and computer science. These guidelines are meant to provide some structure for institutions planning for or revising a major in Data Science

    A gentle transition from Java programming to Web Services using XML-RPC

    Get PDF
    Exposing students to leading edge vocational areas of relevance such as Web Services can be difficult. We show a lightweight approach by embedding a key component of Web Services within a Level 3 BSc module in Distributed Computing. We present a ready to use collection of lecture slides and student activities based on XML-RPC. In addition we show that this material addresses the central topics in the context of web services as identified by Draganova (2003)
    • 

    corecore