Open Access. Powered by Scholars. Published by Universities.®
- Discipline
-
- Programming Languages and Compilers (16)
- Databases and Information Systems (8)
- Education (5)
- Graphics and Human Computer Interfaces (5)
- Other Computer Sciences (5)
-
- Artificial Intelligence and Robotics (3)
- Systems Architecture (3)
- Adult and Continuing Education (2)
- Art and Design (2)
- Arts and Humanities (2)
- Business (2)
- Entrepreneurial and Small Business Operations (2)
- Higher Education (2)
- Life Sciences (2)
- Numerical Analysis and Scientific Computing (2)
- Accounting (1)
- Advertising and Promotion Management (1)
- Anthropology (1)
- Art Practice (1)
- Arts Management (1)
- Audio Arts and Acoustics (1)
- Behavioral Neurobiology (1)
- Bioinformatics (1)
- Business Administration, Management, and Operations (1)
- Business and Corporate Communications (1)
- Cognition and Perception (1)
- Cognitive Neuroscience (1)
- Institution
-
- Singapore Management University (18)
- City University of New York (CUNY) (3)
- Institute of Business Administration (3)
- Aga Khan University (1)
- Brigham Young University (1)
-
- Central Washington University (1)
- Harrisburg University of Science and Technology (1)
- Kennesaw State University (1)
- Louisiana State University (1)
- Southern Adventist University (1)
- Technological University Dublin (1)
- The University of Akron (1)
- United Arab Emirates University (1)
- University of Connecticut (1)
- University of San Diego (1)
- Publication Year
- Publication
-
- Research Collection School Of Computing and Information Systems (18)
- International Conference on Information and Communication Technologies (3)
- Publications and Research (3)
- Articles (1)
- Book Chapters / Conference Papers (1)
-
- Faculty Articles (1)
- Harrisburg University Presidential Research Grants (1)
- Honors Scholar Theses (1)
- International Journal for Research in Education (1)
- LSU Doctoral Dissertations (1)
- MS in Computer Science Project Reports (1)
- Marriott Student Review (1)
- Symposium Of University Research and Creative Expression (SOURCE) (1)
- Undergraduate Honors Theses (1)
- Williams Honors College, Honors Research Projects (1)
- Publication Type
Articles 1 - 30 of 36
Full-Text Articles in Software Engineering
Gnncontext: Gnn-Based Code Context Prediction For Programming Tasks, Xiaoye Zheng, Zhiyuan Wan, Shun Liu, Kaiwen Yang, David Lo, Xiaohu Yang
Gnncontext: Gnn-Based Code Context Prediction For Programming Tasks, Xiaoye Zheng, Zhiyuan Wan, Shun Liu, Kaiwen Yang, David Lo, Xiaohu Yang
Research Collection School Of Computing and Information Systems
A code context model comprises source code elements and their relations relevant to a programming task. The capture and use of code context models in software tools can benefit software development practices, such as code navigation and search. Prior research has explored approaches that leverage either the structural information of code or interaction histories of developers with integrated development environments to automate the construction of code context models. However, these approaches primarily capture shallow syntactic and lexical features of code elements, with limited ability to capture contextual and structural dependencies among neighboring code elements. In this paper, we propose GNNContext, …
Programming A More Efficient Onboarding Process For New Employees, Long H. Pham
Programming A More Efficient Onboarding Process For New Employees, Long H. Pham
Undergraduate Honors Theses
The current onboarding process for new hires in the University of San Diego’s Shiley-Marcos School of Engineering is inefficient. There is no central location where new hires and administrators can track onboarding progress. Both parties have to manage multiple email chains and write their own reminders to keep track of everything. This leads to delays, missing deadlines, and confusion for both parties. A web-based onboarding application has been developed recently to address these issues and streamline the onboarding process for new hires. However, this application contains several accessibility issues and does not follow all of the standards for effective employee …
Experience Report: Identifying Common Misconceptions And Errors Of Novice Programmers With Chatgpt, Hua Leong Fwa
Experience Report: Identifying Common Misconceptions And Errors Of Novice Programmers With Chatgpt, Hua Leong Fwa
Research Collection School Of Computing and Information Systems
Identifying the misconceptions of novice programmers is pertinent for informing instructors of the challenges faced by their students in learning computer programming. In the current literature, custom tools, test scripts were developed and, in most cases, manual effort to go through the individual codes were required to identify and categorize the errors latent within the students' code submissions. This entails investment of substantial effort and time from the instructors. In this study, we thus propose the use of ChatGPT in identifying and categorizing the errors. Using prompts that were seeded only with the student's code and the model code solution …
Chatgpt, Can You Generate Solutions For My Coding Exercises? An Evaluation On Its Effectiveness In An Undergraduate Java Programming Course, Eng Lieh Ouh, Benjamin Gan, Kyong Jin Shim, Swavek Wlodkowski
Chatgpt, Can You Generate Solutions For My Coding Exercises? An Evaluation On Its Effectiveness In An Undergraduate Java Programming Course, Eng Lieh Ouh, Benjamin Gan, Kyong Jin Shim, Swavek Wlodkowski
Research Collection School Of Computing and Information Systems
In this study, we assess the efficacy of employing the ChatGPT language model to generate solutions for coding exercises within an undergraduate Java programming course. ChatGPT, a large-scale, deep learning-driven natural language processing model, is capable of producing programming code based on textual input. Our evaluation involves analyzing ChatGPT-generated solutions for 80 diverse programming exercises and comparing them to the correct solutions. Our findings indicate that ChatGPT accurately generates Java programming solutions, which are characterized by high readability and well-structured organization. Additionally, the model can produce alternative, memory-efficient solutions. However, as a natural language processing model, ChatGPT struggles with coding …
Achieving High Map-Coverage Through Pattern Constraint Reduction, Yingquan Zhao, Zan Wang, Shuang Liu, Jun Sun, Junjie Chen, Xiang Chen
Achieving High Map-Coverage Through Pattern Constraint Reduction, Yingquan Zhao, Zan Wang, Shuang Liu, Jun Sun, Junjie Chen, Xiang Chen
Research Collection School Of Computing and Information Systems
Testing multi-threaded programs is challenging due to the enormous space of thread interleavings. Recently, a code coverage criterion for multi-threaded programs called MAP-coverage has been proposed and shown to be effective for testing concurrent programs. Existing approaches for achieving high MAP-coverage are based on random testing with simple heuristics, which is ineffective in systematically triggering rare thread interleavings. In this study, we propose a novel approach called pattern constraint reduction (PCR), which employs optimized constraint solving to generate thread interleavings for high MAP-coverage. The idea is to iteratively encode and solve path conditions to generate thread interleavings which are guaranteed …
The Effect Of Using The Gamification Strategy On Academic Achievement And Motivation Towards Learning Problem-Solving Skills In Computer And Information Technology Course Among Tenth Grade Female Students, Mazyunah Almutairi, Prof. Ahmad Almassaad
The Effect Of Using The Gamification Strategy On Academic Achievement And Motivation Towards Learning Problem-Solving Skills In Computer And Information Technology Course Among Tenth Grade Female Students, Mazyunah Almutairi, Prof. Ahmad Almassaad
International Journal for Research in Education
Abstract
This study aimed to identify the effect of using the gamification strategy on academic achievement and motivation towards learning problem-solving skills in computer and information technology course. A quasi-experimental method was adopted. The study population included tenth-grade female students in Al-Badi’ah schools in Riyadh. The sample consisted of 54 students divided into two equal groups: control group and experimental group. The study tools comprised an achievement test and the motivation scale. The results showed that there were statistically significant differences between the two groups in the academic achievement test in favor of the experimental group, with a large effect …
Qlens: Visual Analytics Of Multi-Step Problem-Solving Behaviors For Improving Question Design, Meng Xia, Reshika P. Velumani, Yong Wang, Huamin Qu, Xiaojuan Ma
Qlens: Visual Analytics Of Multi-Step Problem-Solving Behaviors For Improving Question Design, Meng Xia, Reshika P. Velumani, Yong Wang, Huamin Qu, Xiaojuan Ma
Research Collection School Of Computing and Information Systems
With the rapid development of online education in recent years, there has been an increasing number of learning platforms that provide students with multi-step questions to cultivate their problem-solving skills. To guarantee the high quality of such learning materials, question designers need to inspect how students’ problem-solving processes unfold step by step to infer whether students’ problem-solving logic matches their design intent. They also need to compare the behaviors of different groups (e.g., students from different grades) to distribute questions to students with the right level of knowledge. The availability of fine-grained interaction data, such as mouse movement trajectories from …
Enhancing Developer Interactions With Programming Screencasts Through Accurate Code Extraction, Lingfeng Bao, Shengyi Pan, Zhenchang Xing, Xin Xia, David Lo, Xiaohu Yang
Enhancing Developer Interactions With Programming Screencasts Through Accurate Code Extraction, Lingfeng Bao, Shengyi Pan, Zhenchang Xing, Xin Xia, David Lo, Xiaohu Yang
Research Collection School Of Computing and Information Systems
Programming screencasts have become a pervasive resource on the Internet, which is favoured by many developers for learning new programming skills. For developers, the source code in screencasts is valuable and important. However, the streaming nature of screencasts limits the choice that they have for interacting with the code. Many studies apply the Optical Character Recognition (OCR) technique to convert screen images into text, which can be easily searched and indexed. However, we observe that the noise in the screen images significantly affects the quality of OCRed code.In this paper, we develop a tool named psc2code, which has two components, …
Specialization: Do Your Job Well Helping Students Who Are Considering A Career In Programming Know How To Invest Their Time., Scott Pulley
Specialization: Do Your Job Well Helping Students Who Are Considering A Career In Programming Know How To Invest Their Time., Scott Pulley
Marriott Student Review
The article examines the effects of specialization on the hiring process for undergraduates studying programming whether in information systems or computer science.
Building Something With The Raspberry Pi, Richard Kordel
Building Something With The Raspberry Pi, Richard Kordel
Harrisburg University Presidential Research Grants
In 2017 Ryan Korn and I submitted a grant proposal in the annual Harrisburg University President’s Grant process. Our proposal was to partner with a local high school to install a classroom of 20 Raspberry Pi’s, along with the requisite peripherals. In that classroom students would be challenged to design something that combined programming with physical computing. In our presentation to the school we suggested that this project would give students the opportunity to be “amazing.”
As part of the grant, the top three students would be given scholarships to HU and the top five finalists would all be permitted …
Android Game, Ryan Weston
Android Game, Ryan Weston
Williams Honors College, Honors Research Projects
The purpose of this project was to create an endless runner game for Android coded in Java and XML and developed in Android Studio. In the game, the player controls a frog that jumps from lily pad to lily pad to avoid logs moving toward the player. The player must also maneuver the lily pads as they can randomly disappear. There are three difficulties in the game that vary the disappearance rate of lily pads as well as the frequency and acceleration rate of the log obstacles. The game also has a scoring system and saves the high score locally …
Mobile Music Development Tools For Creative Coders, Daniel Stuart Holmes
Mobile Music Development Tools For Creative Coders, Daniel Stuart Holmes
LSU Doctoral Dissertations
This project is a body of work that facilitates the creation of musical mobile artworks. The project includes a code toolkit that enhances and simplifies the development of mobile music iOS applications, a flexible notation system designed for mobile musical interactions, and example apps and scored compositions to demonstrate the toolkit and notation system.
The code library is designed to simplify the technical aspect of user-centered design and development with a more direct connection between concept and deliverable. This sim- plification addresses learning problems (such as motivation, self-efficacy, and self-perceived understanding) by bridging the gap between idea and functional prototype …
Effectiveness Of Physical Robot Versus Robot Simulator In Teaching Introductory Programming, Oka Kurniawan, Norman Tiong Seng Lee, Subhajit Datta, Nachamma Sockalingam, Pey Lin Leong
Effectiveness Of Physical Robot Versus Robot Simulator In Teaching Introductory Programming, Oka Kurniawan, Norman Tiong Seng Lee, Subhajit Datta, Nachamma Sockalingam, Pey Lin Leong
Research Collection School Of Computing and Information Systems
This study reports the use of a physical robot and robot simulator in an introductory programming course in a university and measures students' programming background conceptual learning gain and learning experience. One group used physical robots in their lessons to complete programming assignments, while the other group used robot simulators. We are interested in finding out if there is any difference in the learning gain and experiences between those that use physical robots as compared to robot simulators. Our results suggest that there is no significant difference in terms of students' learning between the two approaches. However, the control group …
Vt-Revolution: Interactive Programming Video Tutorial Authoring And Watching System, Lingfeng Bao, Zhenchang Xing, Xin Xia, David Lo
Vt-Revolution: Interactive Programming Video Tutorial Authoring And Watching System, Lingfeng Bao, Zhenchang Xing, Xin Xia, David Lo
Research Collection School Of Computing and Information Systems
Procedural knowledge describes actions and manipulations that are carried out to complete programming tasks. An effective way to document procedural knowledge is programming video tutorials. Existing solutions to adding interactive workflow and elements to programming videos have a dilemma between the level of desired interaction and the efforts required for authoring tutorials. In this work, we tackle this dilemma by designing and building a programming video tutorial authoring system that leverages operating system level instrumentation to log workflow history while tutorial authors are creating programming videos, and the corresponding tutorial watching system that enhances the learning experience of video tutorials …
A Restful Framework For Writing, Running, And Evaluating Code In Multiple Academic Settings, Christopher Ban
A Restful Framework For Writing, Running, And Evaluating Code In Multiple Academic Settings, Christopher Ban
MS in Computer Science Project Reports
In academia, students and professors want a well-structured and implemented framework for writing and running code in both testing and learning environments. The current limitations of the paper and pencil medium have led to the creation of many different online grading systems. However, no known system provides all of the essential features our client is interested in. Our system, developed in conjunction with Doctor Halterman, offers the ability to build modules from flat files, allow code to be compiled and run in the browser, provide users with immediate feedback, support multiple languages, and offer a module designed specifically for an …
Understanding Stack Overflow Code Fragments, Christoph Treude, Martin P. Robillard
Understanding Stack Overflow Code Fragments, Christoph Treude, Martin P. Robillard
Research Collection School Of Computing and Information Systems
Code fragments posted in answers on Q&A forums can form an important source of developer knowledge. However, effective reuse of code fragments found online often requires information other than the code fragment alone. We report on the results of a survey-based study to investigate to what extent developers perceive Stack Overflow code fragments to be self-explanatory. As part of the study, we also investigated the types of information missing from fragments that were not self-explanatory. We find that less than half of the Stack Overflow code fragments in our sample are considered to be self-explanatory by the 321 participants who …
Rack: Code Search In The Ide Using Crowdsourced Knowledge, Mohammad Masudur Rahman, Chanchal K. Roy, David Lo
Rack: Code Search In The Ide Using Crowdsourced Knowledge, Mohammad Masudur Rahman, Chanchal K. Roy, David Lo
Research Collection School Of Computing and Information Systems
Traditional code search engines often do not perform well with natural language queries since they mostly apply keyword matching. These engines thus require carefully designed queries containing information about programming APIs for code search. Unfortunately, existing studies suggest that preparing an effective query for code search is both challenging and time consuming for the developers. In this paper, we propose a novel code search tool-RACK-that returns relevant source code for a given code search query written in natural language text. The tool first translates the query into a list of relevant API classes by mining keyword-API associations from the crowdsourced …
Automated Refactoring Of Legacy Java Software To Default Methods, Raffi Khatchadourian, Hidehiko Masuhara
Automated Refactoring Of Legacy Java Software To Default Methods, Raffi Khatchadourian, Hidehiko Masuhara
Publications and Research
Java 8 default methods, which allow interfaces to contain (instance) method implementations, are useful for the skeletal implementation software design pattern. However, it is not easy to transform existing software to exploit default methods as it requires analyzing complex type hierarchies, resolving multiple implementation inheritance issues, reconciling differences between class and interface methods, and analyzing tie-breakers (dispatch precedence) with overriding class methods to preserve type-correctness and confirm semantics preservation. In this paper, we present an efficient, fully-automated, type constraint-based refactoring approach that assists developers in taking advantage of enhanced interfaces for their legacy Java software. The approach features an extensive …
Software Development For Genome Sequence Analysis, David Farr
Software Development For Genome Sequence Analysis, David Farr
Symposium Of University Research and Creative Expression (SOURCE)
The cost of genome sequencing has decreased rapidly, expanding availability for many biological applications (Muir 2016). For example, researchers can now obtain genome sequences from multiple populations under different types of selection. Comparison of these sequences allows for identification of chromosome regions and specific genes associated with adaptive evolution (Kelly 2013). As an increasing number of researchers engage in this type of inquiry, many have created in-house computer scripts to analyze the raw sequence data (e.g., Kelly 2013), creating a gap in both continuity and standardization.
Using a test dataset and preliminary results from an ongoing artificial selection experiment in …
A Conceptual Framework For A Software Development Process Based On Computational Thinking, Catherine Higgins, Fredrick Mtenzi, Ciaran O'Leary, Orla Hanratty, Claire Mcavinia
A Conceptual Framework For A Software Development Process Based On Computational Thinking, Catherine Higgins, Fredrick Mtenzi, Ciaran O'Leary, Orla Hanratty, Claire Mcavinia
Book Chapters / Conference Papers
A software development process is a mechanism to help software developers plan, design and structure the development of software to solve a problem. Without a process to guide the structured evolution of a solution, it is extremely likely that at least some aspect of the resulting software will be omitted or incorrectly implemented. Even though the importance of utilising a software process for solving problems is accepted, it is a topic that is addressed very lightly (if at all) in most freshman undergraduate computing courses with most courses focusing on programming procedures rather than the process of how to develop …
A Conceptual Framework For A Software Development Process Based On Computational Thinking, Catherine Higgins, Ciaran O'Leary, Orla Hanratty, Fredrick Mtenzi
A Conceptual Framework For A Software Development Process Based On Computational Thinking, Catherine Higgins, Ciaran O'Leary, Orla Hanratty, Fredrick Mtenzi
Articles
A software development process is a mechanism for problem solving to help software developers plan, design and structure the development of software to solve a problem. Without a process to guide the structured evolution of a solution, it is extremely likely that at least some aspect of the resulting software will be omitted or incorrectly implemented. Even though the importance of utilising a software process for solving problems is accepted in the business and academic communities, it is a topic that is addressed very lightly (if at all) in most freshman undergraduate computing courses with most courses focussing on programming …
A Large Scale Study Of Multiple Programming Languages And Code Quality, Pavneet Singh Kochhar, Withthige Dinusha Ruchira Wijedasa, David Lo
A Large Scale Study Of Multiple Programming Languages And Code Quality, Pavneet Singh Kochhar, Withthige Dinusha Ruchira Wijedasa, David Lo
Research Collection School Of Computing and Information Systems
Nowadays, most software use multiple programming languages to implement certain functionalities based on the strengths and weaknesses of different languages. Researchers in the past have studied the impact of independent programming languages on software quality, however, there has been little or no research on the impact of multiple languages on the quality of software. Does the use of multiple languages cause more bugs? Are certain languages when used with other languages make software more bug prone? What are the relationships between multi-language usage and various bug categories? In this study, we perform a large scale empirical investigation to shed light …
A More Accurate Model For Finding Tutorial Segments Explaining Apis, He Jiang, Jingxuan Zhang, Xiaochen Li, Zhilei Ren, David Lo
A More Accurate Model For Finding Tutorial Segments Explaining Apis, He Jiang, Jingxuan Zhang, Xiaochen Li, Zhilei Ren, David Lo
Research Collection School Of Computing and Information Systems
Developers prefer to utilize third-party libraries when they implement some functionalities and Application Programming Interfaces (APIs) are frequently used by them. Facing an unfamiliar API, developers tend to consult tutorials as learning resources. Unfortunately, the segments explaining a specific API scatter across tutorials. Hence, it remains a challenging issue to find the relevant segments. In this study, we propose a more accurate model to find the exact tutorial fragments explaining APIs. This new model consists of a text classifier with domain specific features. More specifically, we discover two important indicators to complement traditional text based features, namely co-occurrence APIs and …
Detecting Broken Pointcuts Using Structural Commonality And Degree Of Interest, Raffi Khatchadourian, Awais Rashd, Hidehiko Masuhara, Takuya Watanabe
Detecting Broken Pointcuts Using Structural Commonality And Degree Of Interest, Raffi Khatchadourian, Awais Rashd, Hidehiko Masuhara, Takuya Watanabe
Publications and Research
Pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base code can lead to join points incorrectly falling in or out of the scope of pointcuts. Deciding which pointcuts have broken due to base-code changes is daunting, especially in large and complex systems. We present an automated approach that recommends pointcuts that are likely to require modification due to a certain base-code change and ones that do not. Our hypothesis is that join points selected by a pointcut exhibit common structural characteristics. Patterns describing such commonalities recommend pointcuts that have potentially broken to the developer. The approach …
Contract-Based General-Purpose Gpu Programming, Alexey Kolesnichenko, Christopher M. Poskitt, Sebastian Nanz, Bertrand Meyer
Contract-Based General-Purpose Gpu Programming, Alexey Kolesnichenko, Christopher M. Poskitt, Sebastian Nanz, Bertrand Meyer
Research Collection School Of Computing and Information Systems
Using GPUs as general-purpose processors has revolutionized parallel computing by offering, for a large and growing set of algorithms, massive data-parallelization on desktop machines. An obstacle to widespread adoption, however, is the difficulty of programming them and the low-level control of the hardware required to achieve good performance. This paper suggests a programming library, SafeGPU, that aims at striking a balance between programmer productivity and performance, by making GPU data-parallel operations accessible from within a classical object-oriented programming language. The solution is integrated with the design-by-contract approach, which increases confidence in functional program correctness by embedding executable program specifications into …
Design, Programming, And User-Experience, Kaila G. Manca
Design, Programming, And User-Experience, Kaila G. Manca
Honors Scholar Theses
This thesis is a culmination of my individualized major in Human-Computer Interaction. As such, it showcases my knowledge of design, computer engineering, user-experience research, and puts into practice my background in psychology, com- munications, and neuroscience.
I provided full-service design and development for a web application to be used by the Digital Media and Design Department and their students.This process involved several iterations of user-experience research, testing, concepting, branding and strategy, ideation, and design. It lead to two products.
The first product is full-scale development and optimization of the web appli- cation.The web application adheres to best practices. It was …
Adaptive Gameplay For Programming Practice, Chris Boesch, Sandra Boesch
Adaptive Gameplay For Programming Practice, Chris Boesch, Sandra Boesch
Research Collection School Of Computing and Information Systems
Over the past four years, we have collaborated to develop a set of online games to enable users to practice software languages in a self-directed manner and as part of a class. Recently we introduced a new adaptive difficulty feature that enables players to self-regulate the difficulty of the games they are playing to practice. These new features also provide additional information to further adapt the problem content to better meet the needs of the users.
Tournament-Based Teaching, Shannon Christopher Boesch, Sandra Boesch
Tournament-Based Teaching, Shannon Christopher Boesch, Sandra Boesch
Research Collection School Of Computing and Information Systems
Over the past two years we have collaborated to develop a process and set of online games to enable additional feedback to both students and instructors in a classroom setting. We have named the resulting process Tournament-based Teaching due to the extensive use of tournament-based feedback for groups and individuals throughout course delivery. Tournament-based Teaching enables individualized and peer-based learning in a classroom setting and provides additional motivation for students to prepare for classroom sessions. It also provides feedback to instructors, which can be leveraged to provide better schedule classroom sessions.
Pointcut Rejuvenation: Recovering Pointcut Expressions In Evolving Aspect-Oriented Software, Raffi Khatchadourian, Phil Greenwood, Awais Rashid, Harry Xu
Pointcut Rejuvenation: Recovering Pointcut Expressions In Evolving Aspect-Oriented Software, Raffi Khatchadourian, Phil Greenwood, Awais Rashid, Harry Xu
Publications and Research
Pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base code can lead to join points incorrectly falling in or out of the scope of pointcuts. In this paper, we present an automated approach that limits fragility problems by providing mechanical assistance in pointcut maintenance. The approach is based on harnessing arbitrarily deep structural commonalities between program elements corresponding to join points selected by a pointcut. The extracted patterns are then applied to later versions to offer suggestions of new join points that may require inclusion. To illustrate that the motivation behind our proposal is well founded, …
Case Study On Using A Programming Practice Tool For Evaluating University Applicants, Shannon Christopher Boesch, Kevin Steppe
Case Study On Using A Programming Practice Tool For Evaluating University Applicants, Shannon Christopher Boesch, Kevin Steppe
Research Collection School Of Computing and Information Systems
We used a programming practice tool to test basic programming skills of prospective students. A live competition was used to test those skills. Students who did well were asked for further interviews. Most students had no prior background and reported learning the basics of two programming languages within two weeks of self-study.