As the IT and high-tech sectors are experiencing rapid growth, there is an increasing need for highly skilled computer science graduates in both the local and global markets. The program includes a rigorous, analytical foundation in mathematics; a thorough understanding of computer science and IT theory; and practical software development skills. Reichman University computer science students receive an average of three job offers from the biggest high-tech companies during their last year of studies.
Program Highlights
- The program provides a rigorous analytical foundation in mathematics, a thorough understanding of computer science and IT theory, as well as practical software development skills.
- Courses in business, marketing, finance, and high-technology entrepreneurship, and a wide variety of general study courses are also available.
- Reichman University computer science alumni are earning among the highest wages in Israel.
- The academic program is dynamic and in constant adaptation to the fastpaced innovations of the high-tech world.
- New elective courses are offered each year to prepare students with the most relevant tools and knowledge.
Selected Courses from the Program:
-
-
This is the first course in the calculus of one variable intended for Computer Science. Topics covered include the algebraic and analytic properties of the real number system, functions, limits, derivatives and an introduction to integration. Applications including graphing functions, maximising and minimising functions, areas and volumes.
-
Systems of linear equations, Gaussian elimination; Matrices, matrix operations, invertible matrices, a method for inverting matrices; Determinants, Cramer`s rule; Vectors in 2-space and 3-space, dot product, norm of a vector, projections, cross product, lines and planes; Real vector spaces, subspaces, linear independence, basis and dimension, row space, column space and nullspace of a matrix, rank of a matrix
-
Discrete Math: This is an introductory course in discrete mathematics oriented toward Computer Science. Topics taught in the course include: - fundamental mathematical concepts (definitions, proofs, sets, relations, functions, order relations, proofs by induction), - counting (permutations, combinations, the inclusion-exclusion principle), - basic number theory and graph theory.
-
Course Syllabus 1. Determinants 2. Linear transformations: kernel, image, composition of transformations, the inverse matrix, the duality of matrices and transformations. 3. Eigenvalues and eigenvectors, the characteristic polynomial, the minimal polynomial, diagonalisation of matrices. 4. Inner products, orthogonality, orthonormality orthogonal matrices
-
Set theory: naive and axiomatic set theory, cardinals and set comparison, finite and infinite sets, countable sets, cardinality of the continuum, degrees of infinity. Logic: We will study in the course about two logics - propositional logic and first order logic. We will understand the general components of a logic - syntax, semantics, and a proof system - and we will elaborate on each of the components with respect to the two above logics. Among other things, we will study about: Propositional logic - logic connectives, truth tables, logical consequence and equivalence, tautologies and contradictions, normal forms. First-order logic - quantifiers, predicates, functions, structures and models, logical consequence and equivalence, normal forms. As a part of first order logic, we will see examples of algebraic structures, and in particular, we will study basic concepts in group theory.
-
“Good data structures and bad code are much better than the other way around”. Indeed, in order to efficiently and effectively solve challenging computational problems, it is important to organize data in an appropriate form, called data structure. Data structures are an essential area of study and practice for computer scientists and practitioners. The course presents and analyzes classical data structures and related algorithms. In particular, we will learn how to assess the performance of various algorithms for searching, sorting, and manipulating data. We will learn widely-used data structures such as lists, stacks, queues, trees, and hash tables. We will then understand the relations between data structures and the efficiency of algorithms that exploit them. Following is a list of subjects to be covered. Time & space complexity: best case, worst case, average case and amortized – in terms of O, Ω, Θ classes. Data structures: linked list, stack, queue, binary heap, binary search tree, binary search tree with augmented data (e.g., interval tree), suffix trees, B-trees, hash table, KD- trees. Algorithms: in addition to the algorithms related to the data structures, we will also learn comparison based sorting algorithms (heap sort, quick sort, merge sort), linear sorting algorithms (radix sort, counting sort and bucket sort), order statistics algorithms, and in particular the median-of-median algorithm.
-
The course provides an introduction to procedural programming and work in a UNIX/Linux environment. The course teaches basic topics in the C programming language, such as memory structure, memory management, pointers, and design of procedural programs. In parallel, we will cover fundamental topics in work in a Linux environment, such as managing permissions, working with text files, and programming in shell scripts. The course will involve programming assignments in C in a Linux environment
-
-
The course teaches techniques for design and analysis of algorithms, and introduces important and widely used algorithms. The course is theoretical in nature, concentrating on the abstract notions involved. Basic graph algorithms such as graph traversals, shortest path, minimum spanning tree, and network flow are covered as well as general techniques such as greedy algorithms and dynamic programming.
-
This course, also known as Nand to Tetris, walks students in the construction of a modern general-purpose computer - hardware and software - from first principles. We will start from the most basic logic gate, known as Nand, and develop from it more gates and chips, leading up to a CPU, memory, and a computer architecture. This will be done using a Hardware Description Language and simulators, like computers are actually developed in industry. We will then develop an assembler, a virtual machine, a compiler for a simple, Java-like programming language, and a basic operating system. We will end this journey by developing a simple computer game like Tetris. It will be a thrill to see this game running on a computer that you built from the ground up. The course provides a deep understanding of many topics in applied computer science, as well as significant system development experience.
-
In this course we will cover essential tools that enhance any programmer's toolbox. We will discuss advanced Java topics (that were not covered in the intro class), distributed version control, Python, SQL, HTML, JavaScript and CSS. We will emphasize self-learning, and will touch upon general programming topics such as debugging and unit-tests. The course will give students a solid footing in each topic, that will allow them to keep exploring on their own.
-
Probability theory is a tool of fundamental importance to nearly all the sciences, including Computer Science. This course is intended as an elementary introduction to the mathematical theory of probability. The course covers the following topics: Basic Terms in Probability: Probability Spaces (Sample Space, the Field of Events and the Probability Function), Axioms of Probability, Combinatorial Analysis and Symmetric Sample Space, Conditional Probability and Baye’s Rule, Independency between Events. Random Variables: General Discrete Distributions and Special (Uniform, Geometric, Binomial, HyperGeometric, Poisson, Negative Binomial) and General Continuous Distributions and Special (Uniform, Exponential, Erlang, Normal), Jointly Distributed Discrete Random Variables, Independent Random Variables, Discrete Conditional Distributions, Expectation, Variance, Correlation (CoVariance, Correlation Coefficient), Markov and Chebyshev inequalities, Limit Laws (Central Limit Theorem, Convergence in Probability, the Weak Law of Large Numbers).
-
An introductory level machine learning course. We will present the main principles of data-driven learning algorithms. We will provide the theoretical basis for learning algorithms and learn about pros and cons of different approaches, from both a mathematical and a practical point of view.
Students will implement and use algorithms and will practice their application in real life data contexts. Homework and examples will be based on python code developed by the students as well as, in special cases, on using python/sklearn packages.
Subjects covered include:
- 1. Linear models: regression, logistic regression, feature selection
- 2. Decision trees , including different approaches to splitting nodes and
pruning techniques
- 3. Bayesean learning, including the advantages and disadvantages of naive vs full Bayes approaches
- 4. The perceptron - both primal and dual
- 5. kNN
- 6. Density estimation and EM
- 7. SVMs, including hinge/slack variables and how they affect results
- 8. Unsupervised learning - clustering techniques
- 9. PAC learning and sample complexity
- 10. VC dimension
- Statistical estimates of error rates
-
-
-
This course is organized around the five-layer Internet architecture. These five layers consist of the application, transport, network, link, and physical layers . The course covers fundamental concepts in the design and implementation of computer communication networks, their protocols, and applications. Topics to be covered include: overview of network architectures, applications, network programming interfaces (e.g., sockets), transport, congestion, routing, and data link protocols, addressing, and distributed algorithms/systems. Examples of protocols will be drawn primarily from the Internet (e.g.,HTTP, SMTP, DNS, TCP, UDP, IP, RIP, OSPF, DHCP, ICMP, Ethernet, etc). In addition, we will also cover several Distributed Algorithms. There will be five assignments and a final exam. This course is intended for third year undergraduate computer science.
-
This is a mathematical class in which we will study the capabilities and limitations of efficient computation. We will classify various computational problems into different classes according to the amount of resources they require and prove reductions between them. We will then introduce more advanced algorithmic techniques (such as randomized algorithms and approximation algorithms) and study their limitations as well.
Topics include: time complexity, the classes P and NP, polynomial time reducibility between problems, the Cook-Levin theorem and the theory of NP completeness, self-reducibility and reducibility between search, optimization and decision problems, space complexity, randomized algorithms, approximation algorithms.
-
This course equips students with verbal communication skills ahead of their transition from academia to the professional arena. Classes are held in small groups, so to allow all students to practice. The course seeks help the students develop effective verbal communication skills by highlighting the various elements of presentation, such as structure, language, presentation, and content. Students will also be able to improve their verbal skills by using multimedia materials.
-
The course will provide an understanding of the theory and implementation of functional programming. The course will review the mathematical basis for functional programming, which is the Lambda calculus, teach the functional programming language Haskell, show how principles of functional programming have penetrated the conventional programming languages and environments, and present models for executing functional programs. The course will also mention the logic programming languages, which are based on First-order logic, and will briefly present the Prolog programming language.
-
More about the Program
Why Study at Reichman University?
For the entire list of courses please refer to the Student Handbook
*In most undergraduate programs, students are required to take general elective courses as part of their curriculum, and can also choose elective courses from other undergraduate programs at Reichman university.
**Reichman University reserves the right to cancel, alter, or expand the academic programs and courses offered.
![](/media/xnyhfdj0/alida-new-testimonial.jpg?width=1366&format=webp)
My CS studies at RU gave me technical knowledge, experience, and confidence that led me to take on a role as a Technical Success Manager in the cybersecurity space. Both the network I built and skills that I learned during my time as a student have proven to be invaluable and opened up many opportunities for me to build a career path combining my passions for technology and customer success.
![](/media/otbfmpbw/niv-new-testimonial.jpg?width=1366&format=webp)
During my third year, I had the opportunity to "take a break" from Computer Science classes and participate in the UpStart Entrepreneurship Program at the University. I am grateful for the valuable insights and experiences of the business world it provided and the privilege to connect with industry experts and fellow entrepreneurs.