1,541 research outputs found

    A Case Study in Modular Programming: Using AspectJ and OCaml in an Undergraduate Compiler Project

    Get PDF
    We report our experience in using two different languages to build the same software project. Specifically, we have converted an entire undergraduate compiler course from using AspectJ, an aspect-oriented language, to using OCaml, a functional language. The course has evolved over a period of eight years with, on average, 60 students completing it every year. In this article, we analyze our usage of the two programming languages and we compare and contrast the two software projects on a number of parameters, including how they enable students to write and test individual compiler phases in a modular way.

    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)

    Supporting the Algebra I Curriculum with an Introduction to Computational Thinking Course

    Get PDF
    The Louisiana Workforce Commission predicts a 33.6% increase in computer science and mathematical occupations by 2022 and the Bureau of Labor Statistics foresees a 16% increase in computer scientists from 2018-2028. Despite these opportunities for job and financial security, the number of Louisiana students enrolled in a nationally accredited computing course is less than 1%, compared to national leaders California and Texas which have 3% and 3.8% of students respectively. Furthermore, the international assessments of mathematical literacy, PISA and TIMMS, both report American students continue to fall further behind their international peers in mathematics achievement. This thesis rejects these statistics as definitive and attempts to contribute to an expansion of the mathematical libraries of a computational thinking course that a teacher could use to support a standards-based Algebra I course. The framework presented in this thesis supports the Louisiana State University (LSU) STEM Pathway course entitled Introduction to Computational Thinking (ICT). The course introduces students to a systematic problem-solving approach in which they learn to solve problems computationally, that is, through abstraction, decomposition, and pattern recognition. ICT utilizes the functional programming language Haskell in the educational programming environment “CodeWorld” in order to create pictures and animations. Jean Piaget, the great child cognitive development psychologist, proclaimed “The goal of intellectual education is not to know how to repeat or retain ready-made truths”; rather, one becomes educated by “learning to master the truth by oneself” (Piaget, 1973). Because of the graphical outputs that one can easily code in CodeWorld, students have the ability to explore an algebraic concept with a computer programmed model, alongside the textbook’s given table, equation and graph. This thesis provides additional projects for supporting the Algebra I curriculum through LSU’s ICT course and an overview of the history of computing with an emphasis on highlighting some of the attempts that were undertaken within the past 80 years to use computational thinking and programming to support problem solving across disciplines, including the humanities, math and sciences

    The Appsmiths: Community, Identity, Affect And Ideology Among Cocoa Developers From Next To Iphone

    Full text link
    This dissertation is an ethnographic study, accomplished through semi-structured interviews and participant observation, of the cultural world of third party Apple software developers who use Apple's Cocoa libraries to create apps. It answers the questions: what motivates Apple developers' devotion to Cocoa technology, and why do they believe it is a superior programming environment? What does it mean to be a "good" Cocoa programmer, technically and morally, in the Cocoa community of practice, and how do people become one? I argue that in this culture, ideologies, normative values, identities, affects, and practices interact with each other and with Cocoa technology in a seamless web, which I call a "techno-cultural frame." This frame includes the construction of a developer's identity as a vocational craftsman, and a utopian vision of software being developed by millions of small-scale freelance developers, or "indies," rather than corporations. This artisanal production is made possible by the productivity gains of Cocoa technology, which ironically makes indies dependent on Apple for tools. This contradiction is reconciled through quasi-religious narratives about Apple and Steve Jobs, which enrolls developers into seeing themselves as partners in a shared mission with Apple to empower users with technology. Although Cocoa helps make software production easier, it is not a deskilling technology but requires extensive learning, because its design heavily incorporates patterns unfamiliar to many programmers. These concepts can only be understood holistically after learning has been achieved, which means that learners must undergo a process of conversion in their mindset. This involves learning to trust that Cocoa will benefit developers before they fully understand it. Such technical and normative lessons occur at sites where Cocoa is taught, such as the training company Big Nerd Ranch. Sharing of technical knowledge and normative practices also occurs in the Cocoa community, online through blog posts, at local club meetings, and at conferences such as Apple's WWDC, which help to enroll developers into the Cocoa techno-cultural frame. Apple's relationship with developers is symbiotic, but asymmetrical, yet despite Apple's coercive power, members of the Cocoa community can influence Apple's policies

    Semantics-driven design and implementation of high-assurance hardware

    Get PDF

    Complete Issue 23, 2000

    Get PDF

    An Empirical Study on The Impact of C++ Lambdas And Programmer Experience

    Full text link
    Lambda functions have become prevalent in mainstream programming languages, as they are increasingly introduced to widely used object oriented programming languages such as Java and C++. Some in the scientific literature argue that this feature increases programmer productivity, ease of reading, and makes parallel programming easier. Others are less convinced, citing concerns that the use of lambdas makes debugging harder. This thesis describes the design, execution and results of an experiment to test the impact of using lambda functions compared to the iterator design pattern for iteration tasks, as a first step in evaluating these claims. The approach is a randomized controlled trial, which focuses on the percentage of tasks completed, number of compiler errors, the percentage of time to fix such errors, and the amount of time it takes to complete programming tasks correctly. The overall goal is to investigate, if lambda functions have an impact on the ability of developers to complete tasks, or the amount of time taken to complete them. Additionally, it is tested if developers introduce more errors while using lambda functions and if fixing errors takes them more time. Lastly, the impact of experience level on productivity is evaluated by comparing the performance of participants from different levels of experience with one-another. Participants were assigned one of five levels based on their progress in the computer science major. The five levels were freshman, sophomore, junior, senior and professional. The professional level was assigned to individuals out of school with 5 or more years of professional experience. Results show that the impact of using lambdas, as opposed to iterators, on the number of tasks completed was significant. The impact on time to completion, number of errors introduced during the experiment and times spent fixing errors were also found to be significant. The analysis of the difference between the different levels of experience also shows a significant difference. The percentage of time spent on fixing compilation errors was 56.37% for the lambda group while it was 44.2% for the control group with 3.5% of the variance being explained by the group difference. 45.7% of the variance in the sample was explained by the difference between the level of education. Therefore, this study suggests that earlier findings that student results are comparable with the results of professional developers are to be considered carefully
    • 

    corecore