scholarly journals Comparison of C++ and Java in Implementing Introductory Programming Algorithms

Author(s):  
Muhammad Shumail Naveed

Computer programming is the heart of computer science and C++ and Java are the most popular and widely used languages. The performance of C++ and Java programming languages has been benchmarked using robotics, numerical, genetic and evolutionary algorithms, but not using introductory programming algorithms. This article examined C++ and Java by analysing the implementation of novice algorithms of introductory programming courses by evaluating the difficulty, effort, time and delivered bugs of programs with Halstead software metrics. The study identified that Java is more difficult than C++ in the implementation of selected algorithms. Similarly, the efforts required to translate the novice algorithms in Java are higher than C++. The time involved in translating selected algorithms in C++ is lower than Java. Similarly, the number of delivered bugs in C++ is lower than Java. The study suggests that C++ is more suitable than Java for the implementation of introductory programming algorithms and reasonably more suitable for introductory programming courses. The study emboldens the programming linguists to do further analyses in contemplating other programming languages with Halstead software metrics and other kinds of algorithms.

2022 ◽  
Vol 22 (2) ◽  
pp. 1-26
Author(s):  
Sadia Sharmin

Computer science is a fast-growing field in today’s digitized age, and working in this industry often requires creativity and innovative thought. An issue within computer science education, however, is that large introductory programming courses often involve little opportunity for creative thinking within coursework. The undergraduate introductory programming course (CS1) is notorious for its poor student performance and retention rates across multiple institutions. Integrating opportunities for creative thinking may help combat this issue by adding a personal touch to course content, which could allow beginner CS students to better relate to the abstract world of programming. Research on the role of creativity in computer science education (CSE) is an interesting area with a lot of room for exploration due to the complexity of the phenomenon of creativity as well as the CSE research field being fairly new compared to some other education fields where this topic has been more closely explored. To contribute to this area of research, this article provides a literature review exploring the concept of creativity as relevant to computer science education and CS1 in particular. Based on the review of the literature, we conclude creativity is an essential component to computer science, and the type of creativity that computer science requires is in fact, a teachable skill through the use of various tools and strategies. These strategies include the integration of open-ended assignments, large collaborative projects, learning by teaching, multimedia projects, small creative computational exercises, game development projects, digitally produced art, robotics, digital story-telling, music manipulation, and project-based learning. Research on each of these strategies and their effects on student experiences within CS1 is discussed in this review. Last, six main components of creativity-enhancing activities are identified based on the studies about incorporating creativity into CS1. These components are as follows: Collaboration, Relevance, Autonomy, Ownership, Hands-On Learning, and Visual Feedback. The purpose of this article is to contribute to computer science educators’ understanding of how creativity is best understood in the context of computer science education and explore practical applications of creativity theory in CS1 classrooms. This is an important collection of information for restructuring aspects of future introductory programming courses in creative, innovative ways that benefit student learning.


Author(s):  
Muhammad Shumail Naveed ◽  
Muhammad Sarim ◽  
Kamran Ahsan

Programming is the core of computer science and due to this momentousness a special care is taken in designing the curriculum of programming courses. A substantial work has been conducted on the definition of programming courses, yet the introductory programming courses are still facing high attrition, low retention and lack of motivation. This paper introduced a tiny pre-programming language called LPL (Learners Programming Language) as a ZPL (Zeroth Programming Language) to illuminate novice students about elementary concepts of introductory programming before introducing the first imperative programming course. The overall objective and design philosophy of LPL is based on a hypothesis that the soft introduction of a simple and paradigm specific textual programming can increase the motivation level of novice students and reduce the congenital complexities and hardness of the first programming course and eventually improve the retention rate and may be fruitful in reducing the dropout/failure level. LPL also generates the equivalent high level programs from user source program and eventually very fruitful in understanding the syntax of introductory programming languages. To overcome the inherent complexities of unusual and rigid syntax of introductory programming languages, the LPL provide elementary programming concepts in the form of algorithmic and plain natural language based computational statements. The initial results obtained after the introduction of LPL are very encouraging in motivating novice students and improving the retention rate.


Author(s):  
Jaime Lester

Sparked by a series of national campaigns to increase interest in computer science, computer science departments are inundated with students who are interested in learning how to program. Despite the interest, introductory computer science course have relatively low completion rates (approximately 55% at Mason) and high rates of academic integrity violations. In response to this environment, the Computer Science department at Mason received an external grant to redesign their introductory programming courses to a self-paced, flipped format. Implementation began in Fall 2015 with a quasi-experimental methodology that tracks students from an experimental course and a control group (those who took more traditional introductory CS courses) over the course of the semester. Data collected includes grades on assignments, self-report surveys, and classroom observations.  The purpose of this study is to examine the impact of a self-paced, flipped curricular design in an introductory experiential computer science course on the immediate (in course) completion.   In this short lightning talk, we will present data from student surveys and classroom observations identifying any difference across the control and experimental groups. Preliminary results identify a significant increase in student completion upwards of a 20% difference across the groups. In addition to increasing knowledge of the impact of self-paced courses on student retention and success in computer science, we offer an alternative method to collect data on classroom observations via the Real-time Observation Classroom Application (ROCA). ROCA allows for efficient data collection and comparison of specific pedagogies to student engagement measures.  


10.28945/2887 ◽  
2005 ◽  
Author(s):  
Keith Whittington

Progressive programming assignments were used in an introductory Java programming course where every assignment built on the previous one. The major goal was to help students learn difficult, abstract concepts. This technique allows students to concentrate on the current topic while building on their previous work. This also provides an incentive for students to keep up with their work. Students often feel that they can skip the current topic and pick up after it is over, but it is difficult to do this in a programming course because every new concept builds on the previous ones. This approach also has built-in scalability, which is difficult to achieve in introductory programming courses due to time constraints and the students limited knowledge. These assignments were given in a CS2-type course where the topics predominantly deal with abstract concepts. This paper discusses the assignments, goals, faculty observations, student comments, and results.


Author(s):  
Anabela de Jesus Gomes ◽  
António José Mendes ◽  
Maria José Marcelino

This chapter aims to present and summarize a variety of research areas that directly or indirectly have influenced Computer Science Education Research, particularly associated to the teaching and learning of programming. It is known that many students encounter a lot of difficulties in introductory programming courses. Possible reasons for these difficulties are discussed and some existing proposals in the literature are presented. Based on this discussion, the chapter also includes a description of work done at the University of Coimbra, trying to define more adequate pedagogical strategies for introductory programming courses. The results obtained and their implementation in a common undergraduate course are presented and discussed. The authors conclude that this new strategy makes learning more stimulating for the students, minimizes dropout intentions, and makes the students learn more and better. The chapter ends with suggestions of future research opportunities within the topic of teaching and learning of programming.


Author(s):  
Wilda Susanti, Et. al.

In this paper, we review the literature related to computer programming learning, where Algorithms and Programming are the topic domains of the Informatics and Computer science clusters. There are 4 competencies in learning outcomes, such as: 1) understand algorithmic concepts; 2) master algorithm concepts and principles; 3) master programming language concepts; and 4) master programming languages and algorithms. The main focus of this review is on beginner programming and topics related to student difficulties in learning programming. Various problems experienced by beginners were identified from the literature to some of the solutions offered by researchers.


10.28945/2464 ◽  
2002 ◽  
Author(s):  
Michael De Raadt ◽  
Richard Watson ◽  
Mark Toleman

Deciding what to teach novice programmers about programming and, in particular, which programming language to teach to novice programmers, and how to teach it, is a common topic for debate within universities. Should an industry relevant programming language be taught, or should a language designed for teaching novices be used? In order to design tools and methodologies for the teaching of novice programmers it is important to uncover what is being taught, and in turn, what will be taught in the future. A census of introductory programming courses administered within all Australian universities has been undertaken. The census aimed to reveal not only what computer programming languages are being taught, but also how they are being taught. From the results of this census two key factors emerged: perceived industry pressure for graduates with certain language skills versus academic training for generic programming skills.


Sign in / Sign up

Export Citation Format

Share Document