This textbook contains the content of a two semester course in discrete structures, which is typically a second-year course for students in computer science or mathematics, but it does not have a calculus prerequisite. The material for the first semester is in chapters 1-10 and includes logic, set theory, functions, relations, recursion, graphs, trees, and elementary combinatorics. The second semester material in chapters 11-16 deals with algebraic structures: binary operations, groups, matrix algebra, Boolean algebra, monoids and automata, rings and fields.
SageMath is a computer algebra system with features covering many aspects of mathematics, including algebra, combinatorics, graph theory, numerical analysis, number theory, calculus and statistics. SageMath is a free open-source mathematics software system licensed under the GPL. It builds on top of many existing open-source packages: NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R and many more. Access their combined power through a common, Python-based language or directly via interfaces or wrappers. Mission: Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab.