Computer Science Flashcards
What is “git?”
Git is a distributed version control system (DVCS) that allows you to track changes in your codebase, collaborate with others, and manage different versions of your software project. It is widely used in software development to keep track of changes made to source code files and to facilitate collaboration among developers.
What is a FORTRAN compiler and what does it do?
A FORTRAN compiler is a software tool that translates source code written in the FORTRAN programming language into machine code or an intermediate representation that can be executed by a computer’s CPU.
What is GDB and how is it used to help troubleshoot code?
GDB, which stands for GNU Debugger, is a powerful and widely used open-source debugger for troubleshooting and analyzing code in various programming languages, including C, C++, and Fortran. It is part of the GNU Project and is available on many platforms, including Windows, Linux, and macOS.
GDB allows developers to examine and manipulate the execution of a program, making it a valuable tool for diagnosing and fixing software issues.
What is a JSON file and what purpose does it have in Microsofts Visual Studio Code application?
A JSON file, which stands for JavaScript Object Notation, is a lightweight and human-readable data interchange format used to store and exchange structured data. JSON files are often used in software development to represent data in a format that is easy for both humans and machines to understand. JSON is language-independent and widely supported in various programming languages and applications.
What is FORTLS and what does it do?
fortls
stands for Fortran Language Server. It is a tool used in programming environments, especially in code editors and Integrated Development Environments (IDEs), to provide features like code completion, symbol searching, and documentation on hover.
What is a “path” and what is its purpose?
In computing, a “path” refers to the location of a file or directory within a file system hierarchy. It specifies the route to access a file or directory from the root of the file system or from a specified starting point.
The purpose of a path is to uniquely identify the location of a file or directory within the file system. Paths are used by operating systems and applications to locate and manipulate files and directories. They provide a standardized way to reference files and directories, enabling users and programs to access and work with them efficiently.
What is the difference between a high and low level programming language?
High-Level Programming Language:
High-level languages are designed to be easily understandable by humans and are closer to natural language.
They provide a higher level of abstraction, allowing developers to write code that is more concise, readable, and portable across different platforms.
High-level languages typically have built-in features and constructs that abstract away the details of the underlying hardware, such as memory management and CPU architecture.
Examples of high-level languages include Python, Java, C#, JavaScript, and Ruby.
Low-Level Programming Language:
Low-level languages are closer to the hardware and provide more direct control over the computer’s resources.
They have a lower level of abstraction, meaning that code written in low-level languages is more closely related to the actual hardware and machine operations.
Low-level languages often require more detailed knowledge of the computer’s architecture and may involve manual memory management and CPU register manipulation.
Low-level languages are typically more efficient in terms of execution speed and memory usage, as they allow for fine-grained control over hardware resources.
Examples of low-level languages include assembly language and machine code.
What is object oriented programming?
Object-oriented programming (OOP) is a programming paradigm that revolves around the concept of “objects,” which are instances of classes. In OOP, objects can contain data, in the form of attributes or properties, and code, in the form of methods or functions. The key principles of object-oriented programming include:
Encapsulation: Encapsulation refers to the bundling of data and methods that operate on the data into a single unit or object. This helps in hiding the internal state of an object and only exposing the necessary functionality through well-defined interfaces. Encapsulation allows for better organization and maintenance of code.
Abstraction: Abstraction involves simplifying complex systems by modeling them at a high level of abstraction. In OOP, abstraction is achieved through classes, which act as blueprints for creating objects. Classes define the properties and behaviors that objects of that class will exhibit, without specifying the implementation details. This allows developers to focus on what an object does rather than how it does it.
Inheritance: Inheritance is a mechanism by which a class can inherit properties and behaviors from another class, called the superclass or base class. This promotes code reusability and allows for the creation of hierarchical relationships between classes. Subclasses inherit the attributes and methods of their superclass and can also add new attributes or methods or override existing ones.
Polymorphism: Polymorphism allows objects of different classes to be treated as objects of a common superclass. This allows for more flexible and modular code, as it enables the use of generic interfaces to manipulate objects of various types. Polymorphism is often achieved through method overriding and method overloading.
What is SQL?
SQL, which stands for Structured Query Language, is a standard programming language specifically designed for managing and manipulating relational databases. It is used for querying, updating, inserting, and deleting data from databases, as well as for creating, modifying, and managing database schema (structure).
SQL is a declarative language, meaning that users specify what they want to achieve without necessarily specifying how to achieve it. The database management system (DBMS) interprets SQL commands and executes them accordingly.
What is an encryption algorithm?
An encryption algorithm is a mathematical procedure used to transform plaintext into ciphertext. There are various encryption algorithms available, each with different characteristics in terms of security, speed, and complexity. Examples include Advanced Encryption Standard (AES), Rivest Cipher (RC), and Data Encryption Standard (DES).
What is a cryptographic key?
A cryptographic key is a piece of information used by the encryption algorithm to control the encryption and decryption processes. There are two main types of encryption keys: symmetric keys and asymmetric keys.
Symmetric Encryption: In symmetric encryption, the same key is used for both encryption and decryption. This means that both the sender and the recipient need to possess the same secret key. Examples of symmetric encryption algorithms include AES and DES.
Asymmetric Encryption: In asymmetric encryption, a pair of keys is used: a public key and a private key. The public key is used for encryption, while the private key is used for decryption. Asymmetric encryption enables secure communication between parties without the need to share a secret key. Examples of asymmetric encryption algorithms include RSA and Elliptic Curve Cryptography (ECC).
What is malware?
Malware, short for “malicious software,” refers to any type of software specifically designed to disrupt, damage, or gain unauthorized access to computer systems, networks, or data, often without the knowledge or consent of the user. Malware encompasses a wide range of malicious programs and code, including viruses, worms, Trojans, ransomware, spyware, adware, and rootkits.
What is a computer core?
`
In the context of computing, the term “core” typically refers to a processing unit within a central processing unit (CPU) or a processing element within a multi-core processor.
A computer core, also known as a CPU core or processing core, is an individual processing unit within a CPU that can execute instructions and perform calculations. Each core within a CPU is capable of independently executing instructions, which allows for parallel processing and multitasking.
Modern CPUs often contain multiple cores, with each core capable of executing its own set of instructions simultaneously. These multi-core processors are designed to improve performance by increasing the overall processing power and efficiency of the CPU.
What are some of the top super computers in the US?
Frontier – Located at the Oak Ridge National Laboratory (ORNL) in Tennessee, Frontier is an exascale supercomputer designed to deliver over 1.5 exaflops of peak processing power, making it one of the most powerful supercomputers in the world.
Summit – Also housed at ORNL, Summit was the world’s fastest supercomputer until it was surpassed by Frontier. It has a peak performance of 200 petaflops (200 quadrillion calculations per second) and is used for a variety of computational tasks, including energy, artificial intelligence, and human health research.
Sierra – Located at the Lawrence Livermore National Laboratory in California, Sierra is primarily used for nuclear weapons simulation as part of the National Nuclear Security Administration’s Advanced Simulation and Computing Program. It has a peak performance of about 125 petaflops.
Perlmutter – Housed at the National Energy Research Scientific Computing Center (NERSC) at the Lawrence Berkeley National Laboratory, Perlmutter is designed for data-intensive science and AI workloads, supporting a wide range of projects from cosmology to genomics.
Frontera – Located at the Texas Advanced Computing Center (TACC) at the University of Texas at Austin, Frontera is one of the most powerful academic supercomputers, designed to support the most demanding scientific computations for researchers across the United States.
What are examples of high level programing languages?
Python
C++
JavaScript
What are the main two examples of low level programming languages?
- Machine code
- Assembly Language
What is a “class” in programing?
A class is a blueprint that defines:
What kind of data something can hold (called properties or attributes)
What actions it can perform (called methods or procedures)
When you actually use a class, you create what’s called an “instance” or “object” from that blueprint.
What is an abstract class in FORTRAN?
An abstract class in Fortran is a special kind of class that can’t be used directly - it’s meant to serve as a template for other classes to build upon.
Example:
module shapes
implicit none type, abstract :: shape contains procedure :: area => calc_area procedure :: perimeter => calc_perimeter end type shape abstract interface function calc_area(this) result(res) import :: shape class(shape), intent(in) :: this real :: res end function calc_area function calc_perimeter(this) result(res) import :: shape class(shape), intent(in) :: this real :: res end function calc_perimeter end interface
end module shapes
What is an interface in fortran?
An interface in Fortran is a way to define how a procedure (subroutine or function) should look - its “contract” or specification. It defines what arguments the procedure takes and returns, without specifying how it actually works.
module computations
implicit none interface compute module procedure compute_integer module procedure compute_real end interface
contains
function compute_integer(x) result(res) integer, intent(in) :: x integer :: res res = x * x end function compute_integer function compute_real(x) result(res) real, intent(in) :: x real :: res res = x * x end function compute_real
end module computations