Historyk i eseista, profesor Uniwersytetu Jagiellońskiego, badacz dziejów Krakowa. Po ukończeniu studiów historycznych na UJ (1972) pracował w liceum ogólnokształcącym, następnie rozpoczął badania naukowe w Instytucie Historii UJ. Doktoryzował się w 1982 r., osiem lat później obronił rozprawę habilitacyjną. Tytuł profesora otrzymał w 1995 r., a profesurę zwyczajną sześć lat później.
W swojej karierze zawodowej pełnił funkcję wicedyrektora Instytutu Historii, dziekana Wydziału Historycznego, prorektora UJ ds. dydaktyki. Obecnie kieruje Zakładem Antropologii Historycznej w Instytucie Historii UJ.
Pełnił również wiele funkcji społecznych i naukowych, m.in. wiceprezesa Polskiego Towarzystwa Historycznego, członka Fundacji Pomocy Dzieciom Niewidomym i Niedowidzącym, Społecznego Komitetu Odnowy Zabytków Krakowa, Rady Naukowej Muzeum Historii Polski, międzynarodowego Kolegium Programowego Muzeum II Wojny Światowej, przewodniczącego Rady Programowej Muzeum Schindlera w Krakowie. Jest inicjatorem i organizatorem Kongresu Zagranicznych Badaczy Dziejów Polski (2007, 2012).
Od 1981 r. redaktor prasy podziemnej. Członek NSZZ „Solidarność”, a następnie Unii Demokratycznej. Powołany na prezesa pierwszej kadencji Instytutu Pamięci Narodowej (1999), złożył rezygnację z ubiegania się o to stanowisko.
W jego bogatym dorobku naukowym znajdują się liczne prace poświęcone historii Polski w XIX w. (m.in. podręcznik akademicki „Historia Polski 1795–1918”, 2000), prace dotyczące Rosji i relacji polsko-rosyjskich („Imperium korupcji”, 1995; „Polacy w służbie Moskali”, 1999), jak również na temat dziejów Krakowa (seria „Dzieje Krakowa”).