hero image
Robert (B.J.) Johnson - Loyola Marymount University. Los Angeles, CA, US

Robert (B.J.) Johnson

Clinical Associate Professor of Computer Science | Loyola Marymount University


Seaver College of Science and Engineering


Phone: 310.338.1938
Email: rjohns19@lmu.edu; robert.johnson@lmu.edu
Office: Doolan 220

Robert (B.J.) Johnson earned his B.S. and M.S. in Computer Science from LMU in 2002 and 2005, respectively, and his PhD in Information Systems and Technology from Claremont Graduate University in 2018. He has been a part-time instructor at LMU since fall semester, 2005, and moved to full-time after retiring from Boeing Satellite Systems in 2017. Dr. Johnson worked in the aerospace industry for over 36 years as a programmer, analyst, and software engineer/architect, for Boeing Satellite Systems, Raytheon Company, GM/Delco, and Hughes Aircraft Company. In that career he has primarily focused on satellite control and telemetry systems, and on computer-automated spacecraft testing systems. He co-authored “Applying the Rapid Application Development Process to Satellite Payload Test Software” with Albert Lin of Boeing, and is currently working on a publication for the Journal of Computers and Education. B.J. is a member of the Tau Beta Pi and Sigma Alpha Nu honor societies, and served as former Chair and Vice-chair of the Los Angeles chapter of the ACM. His research interests include adult learning, contrasting virtual world learning with traditional PowerPoint methods, and tailoring learning to different preferred learning styles. B.J. is also very interested in software engineering, robotics, AI, machine learning, database applications, and engineering ethics.

Education (3)

Claremont Graduate University: Ph.D., Information Systems and Technology 2018

Loyola Marymount University: MSCS, Computer Science 2005

Loyola Marymount University: BSCS, Computer Science 2002

Areas of Expertise (7)

Software Engineering

Computer Science

Agile Development

Computer Systems Organization

Operating Systems

Database Systems


Industry Expertise (11)

Electrical Engineering

Industrial Automation


Corporate Training

Writing and Editing

Computer/Network Security



Information Technology and Services

Computer Software



Research Focus (1)

TWELVE: Training With Experiential Learning using Virtual Environments

[PhD Dissertation]

Passive fact-based learning approaches are applied in most online training but suffer from tediousness, lack of experiential learning, and weak testing. A 3D Virtual World-based approach has the capability to overcome the first two problems because it uses a virtual environment in which the learner participates more actively in the learning. The goal of this research is to compare learning outcomes in a 3D Virtual World-based approach versus a passive fact-based approach in an experimental setting.

Courses (6)

Senior Project Laboratory

Analysis, design, implementation, and presentation of a large-scale, individual project, demonstrating mastery of the computer science curriculum. The idea of this course is for students to show they can successfully conceive of, design, implement, document, and present a medium-size software application. A further goal is to expose students to the concepts of the software engineering discipline, by class lecture and by actually doing. Another goal of this course is to expose the students to two different software development methodologies, the Agile Method and the Capability Maturity Model, Integration®. Since both of these disciplines are currently used in industry, it is important for the student to have the experience of both philosophies. A final goal of this laboratory course is to learn more about software project management. This topic includes being able to estimate such things as the amount of time a project will require for the various phases of its development, and the related cost associated with this time requirement.

view more

Introduction to Computer Science

The goal of this course is to become familiar with some of the great ideas which have arisen from the science of computation, including (but not limited to): * Algorithms and their analysis * Data structures * Programming languages and why they are used * Algorithmic efficiency and complexity measures * Number systems and representations * Basic computer architectures and how they work * The idea of abstraction and how it applies to problem solving * Concepts behind cryptography and computer security * Artificial and human intelligence

view more

Computer Programming

The goal of this course is to learn the basics of computer programming and software application construction. Students learn how to create working computer programs, how to think critically, and how to appreciate the difference between well-crafted programs and what is known (in the software industry) as "schlock". Students learn to view computer programming as an art form as well as a lucrative profession. The topics covered include (but are not limited to): * Famous computer scientists and early computing engines, and an introduction to computer programming * JavaScript (and general) programming language fundamentals such as iteration and conditionals * Number systems and their representations and some introductory data structures * Statements and expressions, functions, and events and event-based programming * Fundamentals of software engineering, generally and for web page construction/operation * Algorithms and their analysis, including some well-known "demo" algorithm programming

view more

Programming Laboratory

The goal of this course is to learn the basics of Java computer programming and software application construction, as well as to learn to apply algoritmic thinking. Students will learn how to create working computer programs, how to think critically about deconstructing problems, and how to appreciate the difference between well-crafted programs and what is known [in the software industry] as schlock. Students learn to view computer programming as an art form as well as a lucrative profession. The topics covered include [but are not limited to]: *We will study the Java programming language, along with key components of its development environment. Unlike JavaScript, which is an interpreted language that is handled, typically, within a web browser, Java is a compiled language; programs must first be translated into .class files, which are then executed by a Java Virtual Machine [JVM]. Since program structure, type structure, and inheritance mechanisms of the two languages are quite different, learning Java will occupy roughly the first month of the course. *You will attempt to perfect your programming style and methodology by working closely, in a laboratory setting, on several medium-sized applications. At the conclusion of this course, students will be able to program in Java; at a minimum, they will be familiar with Java's program and package structure, its namespace, control structures, objects, constructors vs. static factories, classes and the class hierarchy, inheritance, and programming with standard I/O. *Problem areas and paradigms will include [a proper subset of] discrete simulation, algorithms for basic arithmetic, greedy and dynamic programming, iterative and recursive backtrack search, Riemann integration, randomized estimation, function plotting and event-driven programming. At the conclusion of the course, students will be able to recognize and apply several of the well-known important programming paradigms. *You will also pay close attention to testing, and will design countless tests as a routine part of program development. At the conclusion of the course, students will understand the importance of testing in program development, and will develop their own programs using a test-driven methodology.

view more

Software Engineering Laboratory

The main objective of this course is to introduce the students to the essential software engineering principles that guide the design, development, implementation, and management of modern software projects. The emphasis is on real-world application of these principles so that the student will be prepared for what to expect in the professional job environment. The course introduces the topics through lectures and by offering the opportunity to design, implement, and manage a medium-sized group software project. A further goal of this course is to present the students with the rationale behind the concept of software engineering as a discipline, to aid in a more fully functional understanding of the context in which the process-related concepts are applied. Frequent references to the Unified Process and the Agile development method, along with acquaintance with CMMI, TDD, and several other methodologies, will help the student understand these important design philosophies. Some use is made of the Unified Modeling Language [UML] in lectures, several assignments, and some project documentation. A further development of this course is the inclusion of outside customers as well as year-long group projects. The former allows for real-world experience in working with a customer or client who has specific business needs for software; such exposure includes aspects of determining customer needs, providing the customer with regular updates and progress demonstrations, and [most importantly] delivering the completed application to the customer's location and installation to verify that it works correctly. Additionally, the idea of the capstone project has been extended so that the group project can be spaced out over a full year.

view more

Introduction to Database Systems

The goal of this course is to learn the basics of database systems, including their underlying concepts, design, construction, and operation. The topics covered include [but are not limited to] the following: Introduction: What IS a database? *What makes data? What makes data into information? *Data models and database representations *Why even have a database? [advantages, cautions, costs and risks] *Where did databases come from? [historical] *Relational Algebra: fundamental operations Topics in Traditional Relational Databases *Schema and ANSI/SPARC Three-layer Model *Designing Databases: *Entities and attributes *relationships *diagrams: wang vs crows-foot *cardinality *Tables and Relations *Normalization and Normal Forms *Constraints and Stored Procedures *SQL language / sqlfiddle *MySQL, PostGreS *Transactions, Integrity, ACID, and CRUD NoSQL Document-based Databases *MongoDB *CouchDB *Cassandra (column-based) Graph-based Databases *Neo4J *OrientDB Server Stuff to Note *Apache *node.js *PHPmyAdmin *Data Warehousing: "Big" Data *Data Mining: Special Schemas *Security Issues

view more