Are you thinking about studying computer science? Get a head start here!
Hi, I'm Michael Peres and welcome to my podcast. In this episode I discuss why computer science is so fundamentally important, what it takes to have an edge in this industry and advice to getting started.
I unpack the value of abstraction, articulation and patience with regard to computer science and address common question, such as:
Is computer science hard?
Should I study computer science?
What advice should I give to those already studying computer science?
Computer science or mathematics?
Applied mathematics involves the application of mathematics to problems which arise in various areas, e.g., science, engineering or other diverse areas, and/or the development of new or improved methods to meet the challenges of new problems.
We view applied math as the application of mathematics to real-world problems with the dual goal of explaining observed phenomena and predicting new, as yet unobserved, phenomena. Therefore, the emphasis is on both the mathematics, e.g. the development of new methods to meet the challenges of new problems, and the real world.
The problems come from various applications, such as physical and biological sciences, engineering, and social sciences. Their solutions require knowledge of various branches of mathematics, such as analysis, differential equations, and stochastics, utilizing analytical and numerical methods. Very often our faculty members and students interact directly with experimentalists to see their research results come to life.
Mathematics is both an art and a science, and pure mathematics lies at its heart. Pure mathematics explores the boundary of mathematics and pure reason. It has been described as “that part of mathematical activity that is done without explicit or immediate consideration of direct application,” although what is “pure” in one era often becomes applied later. Finance and cryptography are current examples of areas to which pure mathematics is applied in significant ways.
Abstraction (software engineering)
In software engineering and computer science, abstraction is a technique for arranging complexity of computer systems. It works by establishing a level of simplicity on which a person interacts with the system, suppressing the more complex details below the current level. The programmer works with an idealized interface (usually well defined) and can add additional levels of functionality that would otherwise be too complex to handle. For an example, a programmer writing code that involves numerical operations may not be interested in the way numbers are represented in the underlying hardware (e.g. whether they’re 16 bit or 32 bit integers), and where those details have been suppressed it can be said that they were abstracted away, leaving simply numbers with which the programmer can work. Similarly, a task of sending an email message across continents would be extremely complex if the programmer had to start with a piece of fiber optic cable and basic hardware components. By using layers of complexity that have been created to abstract away the physical cables and network layout, and presenting the programmer with a virtual data channel, this task is manageable
Polymorphism is the ability of an object to take on many forms. The most common use of polymorphism in OOP occurs when a parent class reference is used to refer to a child class object.
Any Java object that can pass more than one IS-A test is considered to be polymorphic. In Java, all Java objects are polymorphic since any object will pass the IS-A test for their own type and for the class Object.
It is important to know that the only possible way to access an object is through a reference variable. A reference variable can be of only one type. Once declared, the type of a reference variable cannot be changed.
The reference variable can be reassigned to other objects provided that it is not declared final. The type of the reference variable would determine the methods that it can invoke on the object.
A reference variable can refer to any object of its declared type or any subtype of its declared type. A reference variable can be declared as a class or interface type.
Encapsulation is one of the four fundamental OOP concepts. The other three are inheritance, polymorphism, and abstraction.
Encapsulation in Java is a mechanism of wrapping the data (variables) and code acting on the data (methods) together as a single unit. In encapsulation, the variables of a class will be hidden from other classes, and can be accessed only through the methods of their current class. Therefore, it is also known as data hiding.
Inheritance can be defined as the process where one class acquires the properties (methods and fields) of another. With the use of inheritance the information is made manageable in a hierarchical order.
The class which inherits the properties of other is known as subclass (derived class, child class) and the class whose properties are inherited is known as superclass (base class, parent class).